Spring通过MimeMessageHelper发送邮件,中文附件名出现乱码解决办法

1、当邮件内容是HTML语言时的中文问题

初始化MimeMessageHelper类的时候,设置为“UTF-8”.

JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");

2、邮件附件名为乱码问题

spring的文档里面说MimeMessageHelper设置了encoding,同时对title,text,attach产生作用,如果还是会出现乱码问题,解决办法为:

File file = new File(path);
messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
项目开发代码:发送邮件实例:

JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
senderImpl.setHost(mailSenderInfo.getHost());// 邮件发送服务器
senderImpl.setUsername(mailSenderInfo.getUserName());
senderImpl.setPassword(mailSenderInfo.getPassword());
Properties prop = new Properties();
prop.put("mail.smtp.auth", mailSenderInfo.getSmtpAuth());// 参数设为true,需服务器进行认证,认证用户名和密码是否正确
prop.put("mail.smtp.timeout",mailSenderInfo.getSmtpTimeout());
senderImpl.setJavaMailProperties(prop);
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
messageHelper.setTo(mailSenderInfo.getMailTo());// 收件人
messageHelper.setFrom(mailSenderInfo.getMailFrom());// 发件人
messageHelper.setCc(mailSenderInfo.getMailCc());// 邮件抄送
messageHelper.setSubject(mailSenderInfo.getMailSubject());// 邮件主题
messageHelper.setText(mailSenderInfo.getMailContent(), true);// 邮件内容
if (mailSenderInfo.getMailAttachments() != null) {
	for (String key : mailSenderInfo.getMailAttachments().keySet()) {
	String path = mailSenderInfo.getMailAttachments().get(key);
	File file = new File(path);
	messageHelper.addAttachment(MimeUtility.encodeWord(key), file);
	}
}
//图片问题暂时不贴了
senderImpl.send(mailMessage);
 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值