本地指定文件是UTF-8编码,用google的smtp发到yahoo的邮箱,google和yahoo的附件内容都显示乱码
如果指定文件编码是GBK,在信箱中的显示结果正确
请教如何才能在JavaMail中指定附件内容的编码?

解决方案 »

  1.   

    编码格式问题而已 看下API吧~~
      

  2.   

    直接使用msg.setSubject("中文主题"),或者msg.setSubject("中文主题".getBytes("8859_1"), "GB2312"))都一样会出现乱码。在设置邮件主题前需要将主题字串的字节编码为BASE64格式,并添加编码头,示例代码如下: 
    sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?="); 
      

  3.   

    msg.setSubject();是设置邮件标题
    我说的是附件的内容
      

  4.   

    google和yahoo的附件内容默认就是取用户操作系统的吧。所以应该就是GBK或者GB2312了。
    上传附件时,对于UTF编码的附件,可以先转换成GBK再入库,这样就行了。
      

  5.   

    唉,没那么复杂,setHeader一下就ok了