2010-10-06 99 views
2

在我的Python應用程序中,我希望能夠發送郵件至地址,如っていった@example.jp[email protected]或甚至عرض@وزارة-الأتصالات.مصر,這是完全有效的。使用Python/SMTPlib發送電子郵件到國際化的電子郵件地址

當傳遞地址爲UTF-8時,我得到一個UnicodeDecodeException。如果我使用address.encode('utf-8')對地址進行編碼,則不會出現Python錯誤,但我會收到解釋爲Diagnostic-Code: smtp; 501 Malformed RCPT TO: - psmtp的反彈郵件。

什麼是使一切工作的方式?

謝謝。

+0

據我所知,localpart中的非ASCII字符('@'之前)是不允許的。如果非ascii,域部分('@'之後)必須是IDN編碼的。不知道蟒蛇。 – 2010-10-06 14:50:18

+0

允許使用localpart中的非ascii字符,並且有效。那麼,事實上,在@之前幾乎任何東西都是有效的。 – Pierre 2010-10-06 15:00:04

+0

看看這個答案:http://stackoverflow.com/a/9527510/633961 – guettli 2012-10-05 07:32:53

回答

2

確保您正在與之通話的服務器包含UTF8SMTPEHLO響應。否則它不支持rfc5336。您可以通過使用telnet或netcat來連接到服務器並假裝成SMTP客戶端。

+0

是的,謝謝。看起來像Ubuntu中的Postfix的打包版本不支持該功能... – Pierre 2010-10-06 14:58:34

相關問題