【问题标题】:Designing an email "api"设计一个电子邮件“api”
【发布时间】:2012-04-26 20:26:37
【问题描述】:

所以,我在 Google 的应用引擎上构建了这个网络服务,我希望它能够接收电子邮件。

问题是,我需要授权传入邮件并根据 TO 字段上的 单独 确定目的地。这是为了让人们将服务集成到他们已经运行的任何电子邮件发送系统中。

至少我需要变量,一个键和一个目的地(也是一个电子邮件地址):

一个例子可以是:

af922514-60bc-4595-956d-ec29e6351d8e,kristian@mide.dk@application.appspotmail.com

那真的行不通(我认为),有没有办法逃避第一个@,或者我应该完全以其他方式解决这个问题?

我考虑过对它进行基本编码:

af922514-60bc-4595-956d-ec29e6351d8e,kristian@mide.dk@application.appspotmail.com

解决这个问题:

YWY5MjI1MTQtNjBiYy00NTk1LTk1NmQtZWMyOWU2MzUxZDhlLGtyaXN0aWFuQG1pZGUuZGs=@application.appspotmail.com

我不确定电子邮件地址中是否允许使用结尾的“=”

对此有什么想法吗?

【问题讨论】:

  • 在电子邮件地址的用户部分中几乎可以使用任何内容,并且可以正确转义。但这并不意味着这是一个好主意 - 当涉及到“奇怪”的电子邮件地址时,您可能会遇到许多不符合 RFC 的电子邮件系统。

标签: google-app-engine email incoming-mail


【解决方案1】:

首先,逗号是不行的,因为它会建议多个收件人,大多数邮件客户端会将逗号视为分隔符。

你可以做的就是这样格式化它:

some-var+recipient-addresse+domain.tld@someapp.appspotmail.com

当您的应用收到电子邮件时,您只需执行一个匹配所有内容的正则表达式,直到第一个 + 号。你有你的变量,然后匹配其余的直到一个@符号,用@替换最后一个+,你就有了电子邮件。

这也将允许收件人电子邮件包含 +,因为您只替换第一个和最后一个 + 号。

【讨论】:

    【解决方案2】:

    由于+ 不属于主机名,您可以将最后一个+ 替换为@,这样:

    some-id,myinbox+tag+gmail.com@someapp.appspotmail.com

    翻译为:

    myinbox+tag@gmail.comsome-id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2015-04-26
      • 2019-08-04
      • 1970-01-01
      • 2017-11-13
      • 2011-08-22
      • 2016-05-30
      相关资源
      最近更新 更多