【发布时间】:2012-06-22 04:26:23
【问题描述】:
使用 PHP,我正在制作一个类似于在线礼宾服务的应用程序。我有一个页面显示一个表单,询问用户他想让我做什么。当用户完成表单时,信息将被保存到数据库中,并且用户会收到一封电子邮件,内容是:“感谢您最近提交:(无论他刚刚提交的内容)。”用户将(希望)每个月多次提交相同的表单。
我希望用户能够使用新信息回复我的自动电子邮件,然后这些新信息会更新正确的数据库记录。
问题:如何获取新信息以更新正确的数据库记录?
例如,假设用户“John”今天提交了两次该表单。首先,他要求我为他预订 Chili's 的晚餐,然后他要求我为他预订一些飞往纽约的机票。 John 将收到来自该站点的 2 封电子邮件,感谢他的请求。让我们说今天晚些时候,John 改变了主意,决定转而去 Applebees。我希望他能够回复第一封电子邮件,说明他的变化。然后,我希望将该信息附加到数据库中的正确记录中。 如何在数据库记录中的信息和电子邮件之间建立联系?
我想作为一种可能的解决方案,我可以在电子邮件的主题行中包含数据库的记录 ID 号,例如:“感谢您最近的请求 #428。”然后我可以获取该编号 428 并更新数据库中的记录编号 428。但我认为,如果用户看到这个数字突然出现,这可能会让用户感到困惑。
我正在寻找类似于使用隐藏输入的方法,就像您可以在表单中执行的操作和处理 POST 数据一样。
顺便说一句:我正在使用 CakePHP 2.1.x 并正在使用 IMAP 下载我的电子邮件。但答案可能不是 CakePHP 特有的。
有什么建议吗?谢谢!
【问题讨论】:
-
为每条记录提供一个 ID 似乎是最好的解决方案,因为您可以隔离数据库中的每条记录
-
LISTSERV 软件通过每个消息的“电子邮件地址”代理来完成此操作。这也有助于模拟(因为您提供给“用户”/客户的电子邮件地址是关键(希望只发送到一个帐户)。我建议不要用新电子邮件删除数据,并添加代替记录(以防欺骗)。
-
您还可以查看 JIRA 的工作原理,因为它允许自动创建帐户和通过电子邮件创建问题。回复邮件当然不需要登录,通过一个普通的“reply@”地址回到系统,并在主题中指定一个“问题标识符”,用于确定相关问题(创建后)。这看起来像
[JIRA] (PRJ-32) My request subject,然后您可以使用正则表达式轻松拉取。 -
这里还有一个 JIRA 插件,它演示了如何使用“可收获”字段向其处理程序发送电子邮件,包括 CVS 格式:JIRA Extensible Mail Handler
-
@Jared 感谢这些建议。我现在正在查看 LISTSERV 和 JIRA。
标签: php mysql email cakephp imap