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.
调试欢乐多
在发MAIL前,JAVAMAIL会先编码。而在收MAIL时,也会编码。通过getInputStream 方法返回编完的字符。你是不是让我去修改getInputStream 方法,使编完后的字符能正确显示中文?
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: ”怎么办啊?
因为我们的邮件都是在国内发送的,目的用户也是国内的邮件服务器。
现在国内的邮件服务器其实都支持8bit编码的,就是说可以直接在邮件中使用中文。除非你要发送邮件到国外的服务器。
我现在用
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.