1.邮件标题乱码
邮件标题的乱码很好解决,使用MimeUtility类即可进行转换。代码如下:
mailMessage.setSubject(MimeUtility.encodeText(mailInfo.getSubject(),MimeUtility.mimeCharset("gb2312"), null));
这里的gb2312也可以改为utf-8。
2.英文windows邮件正文乱码
在我本机上邮件正文并没有出现乱码,但是将程序放在了英文windows server上,就出现了乱码。非常奇怪,后来发现如果将中文直接输入到参数中并不会有乱码,但是如果通过文件读取html文件就会有乱码。问题锁定为读取文件,读取文件代码如下:
我测试发现如果在中文系统中读取文件必须要将encode设置为gb2312,在英文的windows上必须设置为iso-8859-1。否则不能正确读出中文。我以为这样解决了问题,结果邮件正文还是乱码!为啥了?我想了下也行是我邮件中设置了编码是utf-8造成的,将utf-8统一改为gb2312就可以了!看来utf-8并不是万能的。总结下即读取文件时用gb2312,发邮件时也要统一成gb2312。不用改为utf-8。