Java:解决收发邮件附件乱码问题

Java:解决收发邮件附件乱码问题
[ 来源:Java | 作者:Java | 时间:2007-7-20 | 去论坛]
imeUtility.encodeWord是进行编码,MimeUtility.encodeWord是进行解码
无论附件中文件是什么样的字符,都可以进行正确的解码,但是当文件都是英文
文字的时候却会包错,为null,英文这个时候不支持全英文,所以这个时候应该:
if(!part_FileName.endsWith("?=")) //是全英文
{
直接赋值
}
else
{
MimeUtility.decodeWord(文件名字);
}
messageBodyPart.setFileName(MimeUtility.encodeWord(fileName));
同样收中文附件时,以MimeUtility.decodeWord()将编码后的字符串解码。


字符编码及字符集转换问题
前面提到MIME要解决的另外一个问题就是将SMTP协议不支持的字节流转换成
为SMTP 协议支持的字节流。比如我们要通过邮件传输一个附件文档,该附件文档就
是一个8bit 字节流,如果简单的直接通过SMTP 发送,其最高位信息将被丢失。MIME
规定可以用两种编码方式将8bit 的字节流编码成为低于8bit 的字节流,它们分别是
BASE64 编码(BASE64 将8bit 字节流编码成6bit 字节流)和QP 编码。这两种编码
方式同样应用在对中文的编码上。例如如果邮件中文题目叫做“CVS 介绍”,那么其
编码后的形式可能为:
Subject: =?gb2312?B?Q1ZTLS3QpMX0LnBwdA==?=
标题字符串以”=?”开始,以”?=”结束。”gb2312”表示字符串的字符集,而以”?”分
隔的”B”就表示此字符串的编码方式为BASE64。我们处理此标题时就要先将BASE64
编码的6bit 字节流转换为原来的8bit 字节流,再根据字符集”gb2312”转换为Java 中的
String 类型。这里可以简单的使用JavaMail 提供的MimeUtility.decodeWord()静态方法
将编码后的字符串解码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值