[英]Javamail ISO-8859-1 formatting
我使用Javamail Api為我的Android手機制作了一個電子郵件客戶端。 如果我嘗試使用以下方法獲取發件人的郵件地址和收件人郵件地址:
Address[] froma = m.getFrom();
String from = InternetAddress.toString(froma);
Address[] toa = m.getRecipients(Message.RecipientType.TO);
String to = InternetAddress.toString(toa);
我得到一個像這樣的字符串:
“Georg =?ISO-8859-1?Q?SP = E4the?=它必須是GeorgSpäthe或Georg Spaethe。
我認為問題是這是德國郵件與另一種編碼。 有人可以幫我解決這個問題嗎?
MIME標頭按RFC 2047編碼,因此您需要先解碼它們。
String decoded = MimeUtility.decodeText("Georg =?ISO-8859-1?Q?SP=E4the?=");
JDK導入:
import javax.mail.internet.MimeUtility;
對於Android:
import com.android.email.mail.internet;
每個Address對象都是InternetAddress,將其強制轉換為該對象,並根據您的需要使用getAddress或getPersonal方法。
對於它的價值:您可以轉換為InternetAddress
並使用toUnicodeString
,如果您的輸入地址是"Georg =?ISO-8859-1?Q?SP=E4the?=" <georg.spaethe@example.com>
,它將以"Georg Späthe" <georg.spaethe@example.com>
的形式返回已解碼的郵件"Georg =?ISO-8859-1?Q?SP=E4the?=" <georg.spaethe@example.com>
。 另外,正如比爾·香農所解釋的那樣,你可以調用getPersonal
和getAddress
來獲取解碼后的值,因此不需要自己MimeUtility
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.