OutputStreamWriter生成CSV,JavaMail发送邮件标题附件乱码

附件乱码解决:

// 这里使用ByteArrayOutputStream是因为长度是自动拓展, 而byte[]必须指定大小
var os = new ByteArrayOutputStream();
// 只需要在这里指定charsetName为指定的编码格式即可,我这里是因为用Office打开csv附件
// Office的excel默认为GB2312,具体那个软件用啥编码格式可以自行百度,保持一致就可以了
Writer writer = new OutputStreamWriter(os, "GB2312")

Email标题乱码,是因为标题过长别分割了,所以会乱码

就好比说一个标题有100个byte,但是在第80个被分割了就会组不成一个字,就会乱码显示!!!

标题解决方式:在启动类main方法加上这段代码

// 设置邮件标题过长不用分割
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
// 设置邮件编码
System.getProperties().setProperty("mail.mime.charset", "UTF-8");

邮件内容可能会乱码,设置字符编码格式

// 主要从以下两个类去考虑解决乱码问题,详细的可以自行百度
MimeMessage mimeMessage = null;
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, CharsetUtil.UTF_8);

参考链接1
参考链接2

猜你喜欢

转载自blog.csdn.net/qq_42071369/article/details/124273087