关于JavaMail中发送中文附件标题乱码的说明

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

以前在CSDN上发过一篇帖子说可能是一个BUG, 本想直接回复那个帖子, 可能由于 CSDN的改版? 那篇帖子我现在无法回复, 只能在这里做一个说明了.

收到SUN工程师的回复, 给了我一个相应的FAQ链接, 实在抱歉当时没有去查询FAQ:-)

http://java.sun.com/products/javamail/FAQ.html#encodefilename

原因是在MIME的相应规范中(RFC2047等)说明了附件标题必须是US-ASCII字符, 所以在发送中文标题的附件时需要编码成US-ASCII字符, 有两种编码方式: B (BASE64), Q (Quoted-Printable), 这些方法在MimeUtility里都已经做了封装, 所以在发送附件时使用方法:

setFileName(MimeUtility.encodeText(fileName, "GBK"));

不过现在邮件系统对此处实现的不是很一致, 所以可能有个别邮件系统收到的是乱码, 可根据情况自己选择相应的编码方式.

如以前提过的直接取ISO8859-1的字节:setFileName(new String(file.getName().getBytes(), "ISO8859-1"));

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有