簡體   English   中英

Javamail ISO-8859-1格式化

[英]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;

另見MimeUtility的Javadoc

每個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> 另外,正如比爾·香農所解釋的那樣,你可以調用getPersonalgetAddress來獲取解碼后的值,因此不需要自己MimeUtility

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM