【问题标题】:How to identify correct email to update proper database record?如何识别正确的电子邮件以更新正确的数据库记录?
【发布时间】: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


【解决方案1】:

这是通常的做法。它通常与唯一的回复和发件人地址结合使用,以增加安全性并可以跟踪退回邮件。

这很安全(为什么有人会更改主题行?)但是您仍然应该确保只有正确的发件人地址才能进行修改,否则恶意用户可以更改号码并将内容发布到他们喜欢的任何票证上。

这对用户来说很容易。我要改变的是主题的措辞,原因有两个:

  1. 请求编号是技术编号,不应成为句子的一部分(在我看来)。
  2. 如果您能够创建一个更有说服力的主题行,以便用户可以看到两封邮件中的哪一封是针对哪种类型的服务,那么用户将更容易找到并回复正确的两封邮件.即使它只是一个非常通用的类别名称来区分它们,它也可能对许多用户有用。

考虑到这一点,一个很好的主题行可能是:

晚餐预订请求 - 自动确认 (#428)

【讨论】:

  • 我认为更复杂的问题是“电子邮件作为数据提交表单”。下面是 JIRA JEMH 插件如何让你handle the formatting,如果你能让客户设法以某种方式遵循它,可能很少有方向。
  • 我想我个人会为每个用户使用一个唯一的电子邮件地址。欺骗来自地址的电子邮件非常容易,因此使用唯一且不可识别的电子邮件地址可以解决此问题。您可以使用 SPF,但这只会确保允许发件人域中的某个人发送电子邮件。
  • Steve,显示“ticket id”的好处是用户可以在打电话或发送单独的电子邮件时参考它。我曾担任支持技术人员,发现这非常有用。使用技术方面的回复地址和社交方面的票证ID,也许?
猜你喜欢
  • 2021-04-17
  • 1970-01-01
  • 2019-02-28
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
相关资源
最近更新 更多