JavaMail笔记

jmail问题笔记
关于使用javamail包发送邮件时编码问题的解决:
1. 在发送正文时指定正文编码:
在发送邮件时使用
MimeBodyPart body = new MimeBodyPart();
body.setContent(content, "text/html;charset=GB2312");
注意此时的content编码必须是所指定的编码格式。
2. 在设置邮件标题时也要指定标题的编码:
MimeMultipart mmp=new MimeMultipart();
mmp.setSubject(subject, "GB2312");
同上也要求subject的编码和指定的编码一致。

3. 发送正文时也可以在header中指定传输编码:
body.setHeader("Content-Transfer-Encoding", "base64"); // 指定使用base64编码

4. 发送名称含中文的附件到邮件服务器,用别的邮件接收程序接收到的附件名显示为乱码

解决办法:
在调用MimeBodyPart的setFileName()时使用Base64编码。例如:

BASE64Encoder enc = new BASE64Encoder();//该类位于jre/lib/rt.jar中
//fds为FileDataSource实例
mbp.setFileName("=?GBK?B?"+enc.encode((fds.getName()).getBytes())+"?=");

5. Gmail、163、qq邮箱都不可以随意更改发送人邮件地址,即setFrom的时候完整邮箱地址必须与前面设置的用户名和smtp服务器对应。而263.sina则可以随意设置发送人邮件地址。

6.生成附件,replaceAll时要改编码。
byte[] tmp1 = this.getName().getBytes("gb2312");
String tmpAcctName1 = new String(tmp1);
templateContent = templateContent.replaceAll("##Name##",
tmpAcctName1); //替换用户名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值