【问题标题】:how do emails with + in them works e.g "support+id160211@somedomain.com"带有 + 的电子邮件如何工作,例如“support+id160211@somedomain.com”
【发布时间】:2016-03-22 17:19:20
【问题描述】:

这些动态外观的电子邮件是如何工作的?这个 + 符号在电子邮件地址中的作用是什么。

似乎接收这些电子邮件的不是真正的电子邮件收件箱。

我的想法是,当我在某处阅读时,这些将转到“support@somedomain.com”。但那有什么意义呢。我主要是在您打开一些支持票或线程时看到这种情况,您可以直接回复您收到的电子邮件,并且您的电子邮件回复被添加到线程/票中..

但我仍然不明白这在幕后是如何运作的。

我希望在我的应用程序中实现类似的功能,用户可以在其中回复我们发送的电子邮件(我不确定在发送原始邮件时应该为回复地址添加什么),然后我想捕捉在我的脚本中以某种方式回复或阅读它,以便我可以将其保存为线程的评论。

我使用 sendmail 发送电子邮件,目前从地址设置为“support@somedomain.com”.. somedomain.com 是从 bluehost 购买的,它的 mx 记录设置为谷歌应用程序提供的记录..

我不知道下一步该做什么。

【问题讨论】:

  • 不知道“somedomain.com”,但 Gmail 会将所有看起来像“jon+doe@gmail.com”的电子邮件重定向到地址“jon@gmail.com”,因此表示用户可以按+之后的任何内容。检查support.google.com/mail/answer/12096?hl=en
  • 不,这是 SMTP 标准中定义的任何内容。电子邮件地址的所有者可以随心所欲地处理它。例如,一个典型的功能是包罗万象的地址:所有未发送到已定义地址列表的邮件都将被重定向到给定地址,而不是退回。说,你真的需要在你的问题更具体。用 PHP 编写邮件服务器没有多大意义,但您当前的服务器(不管它是什么......如果你有的话)可能可以将地址链接到脚本。
  • 如果您使用电子邮件,您应该阅读相关的RFCS。查看 RFC 5233 中的子地址,tools.ietf.org/html/rfc5233

标签: php email


【解决方案1】:

+ 符号及其后面的任何内容都应该被忽略。这是最终用户(电子邮件地址所有者)的功能。

这允许user@gmail.com 注册user+stackoverflow@gmail.com,并将电子邮件发送到user@gmail.com,但允许收件人查看其注册位置。如果地址被传递(例如发送给垃圾邮件发送者),那么您可以查看您的地址的来源。

尽管它是RFC 5322RFC 5233 中的标准,但并非所有(事实上,很少)MTA 都支持这一点。

RFC 5322 告诉我们,以下是允许的,只要它们充当“标记点”(即不是 @ 符号之前用户的开始或结束):

! # $ % & ' * + - / = ?  ^ _ ` . { | } ~

gMail supports this,但这是我所知道的唯一一个。


你说你想实现email-to-PHP。我建议您有两个选择:

  1. php.net/imap
    将所有电子邮件定向到 IMAP 邮箱并使用 PHP 打开邮箱,阅读电子邮件并传递它的内容。简单、可靠(因为电子邮件始终被存储)但不是即时的(这可能由每n 分钟的 cron 触发)。

  2. Email Piping
    如果您有权管理服务器或 cPanel,则可以将电子邮件定向到 PHP 脚本以阅读电子邮件。这是即时的,但需要在服务器上进行更多配置,如果脚本不可用,则电子邮件将被退回。

我自己使用选项 2,因为即时解析电子邮件对我来说更重要。

要在电子邮件中存储标识符(在本例中为线程 ID),您可以按照您的建议使用reply-to 地址(使用support+12345@domain.comsupport@domain.com 是电子邮件地址,12345 是线程 ID ) 或者您可以将线程 ID 存储在电子邮件的主题或正文中。

在我的情况下,我使用 abc123@subdomain.domain.comabc123 作为我需要的哈希值(在您的示例中是用户 ID 和线程 ID),任何发送到 *@subdomain.domain.com 的电子邮件都定向到 Web 服务器,而 Web 服务器又定向到 PHP 电子邮件管道脚本。

您选择走哪条路线,但链接可以帮助您进一步。

【讨论】:

  • 有趣...我不知道它是任何标准的一部分。哪个部分描述了它?文字“+”的“在页面中查找”找不到很多...
  • 我的错误,RFC 5322,答案已更新。
  • iCloud 也支持+。雅虎!邮件使用 - 代替。
  • @egg 谢谢.. 这有帮助.. 你能建议我如何使用这个东西来解决我的需求。由于我们已经在使用谷歌应用来处理我们的电子邮件,我们是否需要启用某些东西才能让这个东西适用于我们的域?
  • 我已经更新了我的答案,说明这可以如何帮助您 - 以及您可以使用的其他选项。
猜你喜欢
  • 2021-03-29
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2019-10-21
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多