JAVAMAIL的中文问题,标题不能正确显示。

时间:2021-05-31 18:07:21
有的显示正常
有的会显示成::?×?¤???ú?·????????
有的会变成::=?ISO-8859-1?Q?Fw: =C6=BB=B9=FB=C8=D5=B1=A8=B9=E3=B8=E6=B3=B5?=

10 个解决方案

#1


JavaMail will automatically determine an appropriate encoding to use for your message parts before sending the message, and will automatically decode message parts when reading them. The getInputStream method will return the decoded data.

#2


by the way,<b>test</b>,:)

#3


意思是不是:
在发MAIL前,JAVAMAIL会先编码。而在收MAIL时,也会编码。通过getInputStream 方法返回编完的字符。

你是不是让我去修改getInputStream 方法,使编完后的字符能正确显示中文?

#4


我现在用
message.getHeader("subject")代替message.getSubject()
通过
    String[] ta1 = m.getHeader("Subject");
    String _subject ;
      _subject = ta1[0];
获得编码
如果是gb2312、gbk、UTF-8就直接解码MimeUtility.decodeText即可
如果是ISO-8859-1、us-assic就在解码后,再通过:
      String temp_p = str;
      byte[] temp_t = temp_p.getBytes("ISO-8859-1");
      String temp = new String(temp_t);
      return temp;
获得。
经过实验是可行的,问题是:
如果_subject是:
=?ISO-8859-1?Q?Fw: =B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
就显示不了了,因为多了个“Fw: ”怎么办啊?

#5


这个问题没有完整的解决办法!很多网站发出的垃圾邮件都是乱码,就算是用Outlook或者foxmail都要手工设置编码格式才能正常显示!我们开发了一个邮件提醒的功能都无法面面举到!

#6


原来这样啊
要手动设置编码的??!!

我这个方法如果遇到朝鲜语也没办法的。

那么如何判断用哪种编码呢?

#7


up!

#8


关于邮件的问题,我认为最好的方法就是不编码!
因为我们的邮件都是在国内发送的,目的用户也是国内的邮件服务器。
现在国内的邮件服务器其实都支持8bit编码的,就是说可以直接在邮件中使用中文。

除非你要发送邮件到国外的服务器。

#9




=============================================================
我现在用
message.getHeader("subject")代替message.getSubject()
通过
    String[] ta1 = m.getHeader("Subject");
    String _subject ;
      _subject = ta1[0];
获得编码
如果是gb2312、gbk、UTF-8就直接解码MimeUtility.decodeText即可
如果是ISO-8859-1、us-assic就在解码后,再通过:
      String temp_p = str;
      byte[] temp_t = temp_p.getBytes("ISO-8859-1");
      String temp = new String(temp_t);
      return temp;
获得。
经过实验是可行的,问题是:
如果_subject是:
=?ISO-8859-1?Q?Fw: =B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
就显示不了了,因为多了个“Fw: ”怎么办啊?
========================================================================

需要将fw:临时存起来,对=?ISO-8859-1?Q?=B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
单独解码才可以,又是javamail的bug.

#10


谢谢!!
结贴!

#1


JavaMail will automatically determine an appropriate encoding to use for your message parts before sending the message, and will automatically decode message parts when reading them. The getInputStream method will return the decoded data.

#2


by the way,<b>test</b>,:)

#3


意思是不是:
在发MAIL前,JAVAMAIL会先编码。而在收MAIL时,也会编码。通过getInputStream 方法返回编完的字符。

你是不是让我去修改getInputStream 方法,使编完后的字符能正确显示中文?

#4


我现在用
message.getHeader("subject")代替message.getSubject()
通过
    String[] ta1 = m.getHeader("Subject");
    String _subject ;
      _subject = ta1[0];
获得编码
如果是gb2312、gbk、UTF-8就直接解码MimeUtility.decodeText即可
如果是ISO-8859-1、us-assic就在解码后,再通过:
      String temp_p = str;
      byte[] temp_t = temp_p.getBytes("ISO-8859-1");
      String temp = new String(temp_t);
      return temp;
获得。
经过实验是可行的,问题是:
如果_subject是:
=?ISO-8859-1?Q?Fw: =B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
就显示不了了,因为多了个“Fw: ”怎么办啊?

#5


这个问题没有完整的解决办法!很多网站发出的垃圾邮件都是乱码,就算是用Outlook或者foxmail都要手工设置编码格式才能正常显示!我们开发了一个邮件提醒的功能都无法面面举到!

#6


原来这样啊
要手动设置编码的??!!

我这个方法如果遇到朝鲜语也没办法的。

那么如何判断用哪种编码呢?

#7


up!

#8


关于邮件的问题,我认为最好的方法就是不编码!
因为我们的邮件都是在国内发送的,目的用户也是国内的邮件服务器。
现在国内的邮件服务器其实都支持8bit编码的,就是说可以直接在邮件中使用中文。

除非你要发送邮件到国外的服务器。

#9




=============================================================
我现在用
message.getHeader("subject")代替message.getSubject()
通过
    String[] ta1 = m.getHeader("Subject");
    String _subject ;
      _subject = ta1[0];
获得编码
如果是gb2312、gbk、UTF-8就直接解码MimeUtility.decodeText即可
如果是ISO-8859-1、us-assic就在解码后,再通过:
      String temp_p = str;
      byte[] temp_t = temp_p.getBytes("ISO-8859-1");
      String temp = new String(temp_t);
      return temp;
获得。
经过实验是可行的,问题是:
如果_subject是:
=?ISO-8859-1?Q?Fw: =B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
就显示不了了,因为多了个“Fw: ”怎么办啊?
========================================================================

需要将fw:临时存起来,对=?ISO-8859-1?Q?=B8=D0=CE=F2--=D6=C2=D2=D1=BB=E9=B5=C2=BA=CD=CE=B4=BB=E9=B5=C4?=
单独解码才可以,又是javamail的bug.

#10


谢谢!!
结贴!