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

中文

以前在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"));

时间: 2024-12-30 19:21:52

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

lumisoft-关于邮件发送,附件名乱码问题。

问题描述 关于邮件发送,附件名乱码问题. 我在写基于lumisoft 邮件发送时遇见个很头疼的问题--附件名为汉字,且长度过长就不能被其他邮件系统正常解析. 首先我在将附件写入邮件body时使用: multipartMixed.BodyParts.Add(MIME_Message.CreateAttachment(stream, attachments[attach])); 发现有的邮件系统不能正确解析中文名,但是部分可以.我认为可能是编码问题.然后做了一下修改. MIME_Entity att

vi 乱码-在vi中编写中文后出现乱码

问题描述 在vi中编写中文后出现乱码 在vi编辑器中printf输出中文出现乱码,输入的时候显示的是中文,再进入后却是??????的乱码 解决方案 把编码改成UTF-8 解决方案二: 修改环境变量LANG为UTF-8,可以使用命令export LANG=UTF-8 或者修改家目录下的.bashrc文件 解决方案三: 在debian上試著改過但是不能用...

PHP发送UTF-8编码中文邮件标题乱码的解决

当我们使用下面的PHP语句发送中文电子邮件的时候,会发现邮件的标题是乱码,而邮件正文却是正确的,如何才能使得邮件标题不是乱码呢? $subject = stripslashes($the_post[''Title'']); $headers = "MIME-Version: 1.0rn"; $headers .= "Content-type: text/plain; charset=utf-8rn"; $headers .= "Content-Transf

asp.net URL中包含中文参数造成乱码的解决方法_实用技巧

问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:http://www.****.com/user.aspx?id=水天,就出现大问题了: 1.从IE地址栏中直接输入这个地址,访问没错: 2.做一个静态页,其中包括这个超链接,点击访问也没错: 3.就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码. 一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的

解决HttpClient的FilePart上传文件中使用中文名称文件名乱码问题

[java] view plaincopy String targetUrl = "http://localhost:8080/Test";          PostMethod filePost = new PostMethod(targetUrl) {//这个用来中文乱码                  public String getRequestCharSet() {                          return "UTF-8";//

仿163邮件中发送多附件的功能

var currFocus; var ExistAttaInfo = new Array(); var oldDelAttas = new Array(); var attaIdx = 0; var IsIE; function fInitMSIE(){ if (navigator.userAgent.indexOf("MSIE") != -1){ IsIE = true; }else{ IsIE = false; } } fInitMSIE(); function fTrim(str

php取MYSQL数据库中的中文数据时乱码

在网上找了一些资料,都是一堆费话,实现就下面一句就可以了.其它方法目前不知道. $charset=''gbd''; $conn=数据库链接; @mysql_query("SET NAMES ".$charset."",$conn);  

关于Ajax请求中传输中文乱码问题的解决方案_AJAX相关

今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: "Post", contentType: "application/x-www-form-urlencoded; charset=utf-8", url: "http://localhost/CRM/Ashx/HandK

asp.net查出oracle数据库中的中文乱码问题

把这两天两次安装IBM2650服务器中出现的问题做一个总结: 1.第一次安装,用IBM的引导盘引导,按步就班的下来,选择语言,做Raid5,选择windows系统等等 .安装好windows2003企业版之后,再去安装oracle时,安装到一半时,提示不能创建快捷方式.取消, 再安装还是不能创建快捷方式,就那样安装上了.安装之后oracle运行倒也正常,导入数据,发现中文 变成了乱码.再安装editplus和winrar发现显示窗口的中文也是乱码,右键菜单上的部分中文是乱码. 在网上搜了一下,原