java mail中文乱码彻底解决

折腾了好久,终于把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();
    }

猜你喜欢

转载自joerong666.iteye.com/blog/1735515