亚马逊SES-电子邮件地址中的非ASCII字符



我正在尝试使用Amazon SDK发送给.NET和SES的电子邮件。我有一个由特殊信件组成的电子邮件,例如:

ęxąmplęc.com

对于域部分,我阅读了有关PunyCode的信息,这很好。但是对于地址的本地部分,我似乎找不到一个解决方案:我尝试使用RFC 2047编码整个电子邮件,但是SES返回"丢失final @ domain"错误,所以我尝试仅编码一个本地部分,因此电子邮件将为

=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=@punycodeemail.com

,但这似乎也没有用。有人成功解决了这一点吗?

,这就是我发现的:

基本SMTP电子邮件地址规范(RFC 5322第3.4节)不允许在7位ASCII范围的有限子集之外的电子邮件地址。为了支持电子邮件地址,例如发送和接收电子邮件服务器的问题中的电子邮件地址,需要支持smtp的扩展名为smtputf8在RFC 6531中定义的。

根据我与亚马逊SES支持团队SMTPUTF8的对话,目前并未得到广泛支持(2017年11月23日),因此他们也不支持它。他们的开发团队正在努力,但是他们不知道何时,或者,它将成为生产。

当前在.NET SDK文档中有关MIME编码的评论似乎有些红鲱鱼。

默认情况下,字符串必须为7位ASCII。如果文本必须包含任何其他字符,然后您必须使用MIME编码字语法(RFC2047)而不是字面的字符串。Mime编码字语法使用以下表格:=?charset?编码?编码 - 文本?=。更多信息,请参阅RFC2047。

由于我对此聊了聊了亚马逊,他们似乎正在纠正文档的某些部分,因此可以在API文档中找到更好的描述。

Amazon SES不支持SMTPUTF8扩展名,如图所述RFC6531。因此,目的地电子邮件的本地部分地址( @标志之前的电子邮件地址的一部分)可能仅包含7位ASCII字符。如果地址的域部分( @符号之后的部分)包含非ASCII字符,它们必须如RFC3492中所述,使用PunyCode进行编码。

相关内容

  • 没有找到相关文章

最新更新