Nic*_*tte 4 php amazon-web-services amazon-ses aws-php-sdk
我试图找到这方面的详细信息,但找不到任何确认。我正在使用 PHP SDK 并尝试了以下测试(下面的电子邮件是一个示例,但 gmail 支持电子邮件中的 UTF-8 字符):
我实际上发送了“?” 就像使用 PHP SDK 并查看它在 POST 请求正文中编码(URL)的查询一样:
Destination.ToAddresses.member.1=myemail%2B%E2%9C%96%40gmail.com
这是我从 SES 回复中得到的信息:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidParameterValue</Code>
<Message>Local address contains control or whitespace</Message>
</Error>
<RequestId>f28c2325-5c09-11e6-9156-ef3e33b8e223</RequestId>
</ErrorResponse>
Run Code Online (Sandbox Code Playgroud)
我错过了什么还是不支持?如果不是,是否有计划支持它?
正如最新的 Amazon SES开发人员指南中所述,关于限制,Amazon SES 使用标准RFC-822电子邮件地址。
RFC-822 基本上将字符库限制为 7 位 ASCII 字符串。MIME 在正文和一些特定的标题字段中添加了对 8 位字符集的支持,但电子邮件地址和所有标题字段的完全国际化支持 Unicode、删除 ASCII 曲目限制和 UTF-8 字符集是另一个标准的一部分:RFC -6352 .
在 Amazon SES 将其接受的标头字段从 RFC-822 更改为允许电子邮件地址使用非 ASCII 字符的 RFC-6532 之前,您将无法将 UTF-8 电子邮件地址用于 Amazon SES。
2023 年 6 月 15 日更新:
\n感谢 @decibyte 指出了这一点,但看起来 SES 文档不再支持电子邮件本地部分中的 Punycode:
\n\n\nPunycode 不允许出现在电子邮件地址的本地部分(@ 符号之前的部分)中,也不允许出现在“友好发件人”名称中。如果您想在“友好发件人”名称中使用 Unicode 字符,则必须使用 MIME 编码字语法对“友好发件人”名称进行编码,如使用 Amazon SES API 发送原始电子邮件中所述。
\n
参考: https: //docs.aws.amazon.com/ses/latest/dg/send-email-raw.html
\n2022 年 10 月 6 日更新:
\nSES 现在支持 UTF-8 字符,使用 Punycode,如下所述:
\nhttps://docs.aws.amazon.com/ses/latest/dg/send-email-raw.html
\n\n\n若要对邮件信封中使用的电子邮件地址进行编码,请使用\nPunycode 编码。
\n例如,要将电子邮件发送到 \xe5\xbc\xa0\xe4\xbc\x9f@example.com,请在地址的本地部分(@ 符号之前的部分)使用 Punycode 编码。生成的\n编码地址为 xn--cpqy30b@example.com。
\n
不幸的是,Punycode 甚至不受 Gmail 等电子邮件提供商的支持,它只会显示 ASCII 字符,这导致了另一个问题:为什么还要建议这样做?
\n2016年4月25日回复:
\n为了补充 HiDeo 的答案,我还得到了亚马逊的官方确认,目前不支持此功能,并已转发给 SES 团队考虑:
\nhttps://forums.aws.amazon.com/thread.jspa?threadID=236854
\n亚马逊的原始答案:
\n\n\n你好,
\n感谢您提出此功能请求!我已将其转发给 SES 团队\n以供考虑。遗憾的是,您不会收到任何回复,但请留意 https://aws.amazon.com/new 上的新增内容博客以获取任何更新!
\n问候,
\n马特·W.
\n