使用spring自带的发送邮件,添加附件时,发送邮件成功,但是 附件名却是乱码的。
百度一番。
答案大致为两种。
1. 添加附件时,将附件名加密一下
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8"); helper.addAttachment(MimeUtility.encodeText(fileName), file);// MimeUtility.encodeText(name) 加密一下
2.设置环境变量
System.setProperty("mail.mime.splitlongparameters", "false");
第一种方法,亲测无效。跟踪发送邮件源码[org.springframework.mail.javamail.MimeMessageHelper]
此处Spring是做了加密处理的。显然不需要再次加密。
第二种方法,由于没有查看源码,认为在设置
javaMailProperties.put("mail.mime.splitlongparameters", "false"); javaMailSender.setJavaMailProperties(javaMailProperties);
跟方案设置是一样的。
反复测试,结果都不对。
跟踪源码:[javax.mail.internet.ParameterList] javax.mail 1.6.2
这里是在System.getProperties()中取值的。
所以调整了成方案二,即可解决。
切记,要使用System.setProperty()。