网上有各种解决办法。但都是对中文进行编码。都试过了,都不行。包括
String subject = new String(base64.encode((mailInfo.getSubject()).getBytes("UTF-8")));
//mailMessage.setSubject("=?UTF-8?B?" + subject + "?=");
mailMessage.setSubject(MimeUtility.encodeText(mailInfo.getSubject(), "UTF-8", "B"));
// mailMessage.setSubject(mailInfo.getSubject());
mimeMsg.setSubject( MimeUtility.encodeText( Subject) );// 使用指定的base64方式编码,并指定编码内容的字符集是gb2312
mimeMsg.setSubject( MimeUtility.encodeText( Subject,”gb2312”,”B”)); //B为base64方式、
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
newMessage.setSubject("=?GB2312?B?"+enc.encode(mail_subject.getBytes())+"?=");
等等。最后发现是包冲突的问题。
通过测试发现mail1.4.1.jar(即javax.mail)和 geronimo-javamail_1.4_spec-1.2.jar 冲突,所以把后者干掉即可。