2017-09-06 132 views
12

我試圖使用適用於.NET和SES的Amazon SDK發送電子郵件。我有一個電子郵件其中包含特殊字符,例如:Amazon SES - 電子郵件地址中的非ASCII字符

ęxąmplę@źćż.com

對於域的一部分,我讀到的Punycode和工作正常。但對於地址的本地部分,我似乎無法找到解決方案:我嘗試使用RFC 2047編碼整個電子郵件,但然後SES返回'缺少最終@域'錯誤,所以我試圖編碼只有本地部分,所以電子郵件將

[email protected]com 

但似乎也沒上班。有人成功解決了這個問題嗎?

+0

'unicode(sender,'latin-1')。encode('utf-8')' – SriniV

回答

2

所以這是我發現了:

SMTP電子郵件地址規格(RFC 5322 Section 3.4)不允許7-bit ASCII範圍的有限的子集外的電子郵件地址。爲了支持電子郵件地址,例如發送和接收電子郵件服務器需要支持在RFC 6531中定義的名爲SMTPUTF8的SMTP擴展。

根據我與亞馬遜SES的支持團隊SMTPUTF8的對話,目前尚未得到廣泛支持(2017年11月23日),因此他們也不支持它。他們的開發團隊正在研究它,但是他們不知道什麼時候或者甚至是否會投入生產。

下面的評論目前在the .Net SDK documentation關於MIME編碼似乎有點red herring

默認情況下,字符串必須是7位ASCII。如果文本必須包含 任何其他字符,則必須使用MIME編碼字的語法(RFC 2047)而不是文字字符串。 MIME編碼詞語法使用以下形式的 :=?charset?encoding?encoded-text?=。有關更多 的信息,請參閱RFC 2047

因爲我聊到亞馬遜這個他們似乎被修正文檔更好的描述可以在API documentation發現的某些部分。

亞馬遜SES不支持SMTPUTF8延伸,如在 RFC6531說明。由於這個原因,目標電子郵件的本地部分 地址(@符號之前的電子郵件地址部分)可能只有 包含7位ASCII字符。如果地址 (@符號後面的部分)的域部分包含非ASCII字符,則必須使用Punycode編碼它們 ,如RFC3492中所述。

+0

謝謝你的回答。遺憾的是,它尚未得到廣泛支持。 – Konek

相關問題