0

當我們收到包含包含方括號的收件人InternetAddressesMimeMessage時,我們在撥打MimeMessage.getAllRecipients()時會收到'javax.mail.internet.AddressException: Local address contains illegal character in string'。下面電子郵件地址中的方括號字符

的電子郵件地址是一個例子,我們得到了上面的異常:

"ABC NAME-DEM-SAST1" <ABCNAME-DEM-SAST1[[email protected]]>

是上面的例子中解決一個實際有效的電子郵件地址?如果是這樣,爲什麼不能從它創建InternetAddress?

例如InternetAddress add = new InternetAddress("\"ABC NAME-DEM-SAST1\" <ABCNAME-DEM-SAST1[[email protected]]>",false);我看過Javamail problem with ñ characters in mail addresses問題的答案,但無濟於事。

我正在使用javamail 1.4並且JVM正在Linux主機系統上運行。

關於這個問題的任何見解將不勝感激!

Regards, PM。

回答

1

This explanation表示「[」和「]」在電子郵件地址中是無效的字符,除非用於綁定域字面值(例如[192.1.0.0])。 如果示例地址應該顯示的名稱和相應的地址,正確的語法是

"ABC NAME-DEM-SAST1" <[email protected]> 

方括號用於由Microsoft Office,以紀念一次性地址(http://msdn.microsoft.com/en-us/library/cc842281.aspx),但是,這似乎是不標準化,也不符合給定的例子。

The email address RFC

+0

感謝那個信息Pyranja。我們收到的以這種格式格式化的收件人地址的郵件全部來自Exchange服務器/ Outlook客戶端。爲了成功處理這些非標準的收件人地址格式,我將Session的屬性'mail.mime.address.strict'設置爲false。我們處理的所有SMTP郵件都來自郵件服務器,而不是客戶端,所以我們假設收件人地址已經被源郵件服務器檢查過!我不知道這是否是最好的解決方案,但至少我們現在可以處理這些類型的收件人地址了。 –

相關問題