折腾了好久,终于把javamail的中文乱码搞定,网上都内容基本抄来抄去,没一个讲到重点,后面受一篇base64encoder的文章启发,终于把java mail的中文乱码搞定,其中java mail使用的是apache的common mail,具体解决方案如下,有两种解决方案:
解决方案一:
public void send() throws Exception {
SimpleEmail email = new SimpleEmail();
email.setHostName //省略
email.setFrom //省略
email.addTo //省略
email.setSubject("=?UTF-8 ?b?" + enc.encode("邮件标题".getBytes()) + "?=");
email().setCharset("UTF-8 ");
email().setMsg(new String("邮件正文".getBytes("iso-8859-1 "), "UTF-8 "));
//上面这一行,有时并不需要做编码转换,也就说直接使用"邮件正文"作为参数即可,至于需不需要转换,则需要尝试
email().send();
}
解决方案二(无需调用setCharset方法):
public void send() throws Exception {
SimpleEmail email = new SimpleEmail();
email.setHostName //省略
email.setFrom //省略
email.addTo //省略;
email.setSubject("=?UTF-8 ?b?" + enc.encode("邮件标题".getBytes()) + "?=");
email.setContent(new String("邮件正文".getBytes("iso-8859-1 "), ”UTF-8 "), "text/plain;charset=UTF-8 ");
//上面这一行,有时并不需要做编码转换,也就说直接使用"邮件正文"作为参数即可,至于需不需要转换,则需要尝试
email.send();
}