【问题标题】:Javamail ISO-8859-1 formattingJavamail ISO-8859-1 格式
【发布时间】:2013-05-05 01:48:33
【问题描述】:

我使用 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?= 它必须是 Georg Spaethe 或 Georg Spaethe。

我认为问题在于这是带有另一种编码的德国邮件。谁能帮我解决这个问题?

【问题讨论】:

    标签: java android email jakarta-mail iso-8859-1


    【解决方案1】:

    为了它的价值:如果您的输入地址是"Georg =?ISO-8859-1?Q?SP=E4the?=" <georg.spaethe@example.com>,您可以转换为InternetAddress 并使用toUnicodeString,它将以"Georg Späthe" <georg.spaethe@example.com> 的形式返回解码的邮件。另外,正如 Bill Shannon 所解释的,您可以调用 getPersonalgetAddress 来获取解码后的值,因此无需自己摆弄MimeUtility

    【讨论】:

      【解决方案2】:

      每个地址对象都将是一个 InternetAddress,将其转换为该地址并根据您的需要使用 getAddress 或 getPersonal 方法。

      【讨论】:

        【解决方案3】:

        MIME 标头按照RFC 2047 编码,因此您需要先对其进行解码。

        String decoded = MimeUtility.decodeText("Georg =?ISO-8859-1?Q?SP=E4the?=");
        

        JDK 导入:

        import javax.mail.internet.MimeUtility;
        

        对于安卓:

        import com.android.email.mail.internet;
        

        另见Javadoc of MimeUtility

        【讨论】:

          猜你喜欢
          • 2019-05-02
          • 2015-10-11
          • 2011-06-10
          • 2013-01-19
          • 2012-05-25
          • 1970-01-01
          • 2012-11-07
          • 2019-02-21
          • 2011-12-27
          相关资源
          最近更新 更多