使用 java 发送邮件,附件展示乱码,不是展示自己定义的文件名
后来我将代码中设置的附件名改成不带中文,结果好了。我将附件另存为一个正常的 excel 名称。结果在邮件中看到的附件是这样的。刚开始我写的代码是这样的。
·
刚开始我写的代码是这样的
private Mail initMail(List<Map<String , String>> writeInFieldsList , List<Map<String , ?>> allFieldsList , String smallCity) throws Exception {
byte[] excelBytes = CustomExcelUtils.trafficSignalWarning(writeInFieldsList, allFieldsList , Constant.sheetHeaderAlias , Constant.indexedComparator);
String renderDataToTemplate = ThymeleafTemplateUtils.trafficSignalWarning(allFieldsList);
String subject = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE) + "关键业务指标预警-" + smallCity;
Mail mail = new Mail();
mail.setSubject(subject);
mail.setFrom(javaMailSenderProperties.getUsername());
mail.setTo("fengliangliang@xiaoning.cn");
// mail.setCc("fengliangliang@xiaoning.cn");
mail.setContent(renderDataToTemplate);
mail.setAttachName("业绩预警" + ".xlsx");
mail.setAttach(excelBytes);
return mail;
}
/**
* 发送MIME类型的邮件
* @param email 邮件对象
*/
public void sendMimeMail(Mail email) throws MessagingException {
//基于这个对象可以发送HTML,或者携带附件的二进制邮件
MimeMessage message= javaMailSender.createMimeMessage();
if(StringUtils.isNotBlank(email.getCc())) {
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(email.getCc()));
}
//构建发送模板邮件的对象
MimeMessageHelper helper = new MimeMessageHelper(message,true);
//设置发送邮箱
helper.setFrom(email.getFrom());
//设置接收邮箱
helper.setTo(InternetAddress.parse(email.getTo()));
//设置邮件名(主题)
helper.setSubject(email.getSubject());
//设置邮件内容
helper.setText(email.getContent() ,true);
//这里可以发送带有附件的邮件,如果没有附件可以省略,就不在多做描述
if ( StringUtils.isNotBlank(email.getAttachName()) && email.getAttach() != null ) {
ByteArrayResource byteArrayResource = new ByteArrayResource( email.getAttach() );
helper.addAttachment(email.getAttachName() , byteArrayResource);
}
//发送邮件
javaMailSender.send(message);
}
结果在邮件中看到的附件是这样的

直接打开

我将附件另存为一个正常的 excel 名称

结果可以正常打开
后来我将代码中设置的附件名改成不带中文,结果好了
private Mail initMail(List<Map<String , String>> writeInFieldsList , List<Map<String , ?>> allFieldsList , String smallCity) throws Exception {
byte[] excelBytes = CustomExcelUtils.trafficSignalWarning(writeInFieldsList, allFieldsList , Constant.sheetHeaderAlias , Constant.indexedComparator);
String renderDataToTemplate = ThymeleafTemplateUtils.trafficSignalWarning(allFieldsList);
String subject = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE) + "关键业务指标预警-" + smallCity;
Mail mail = new Mail();
mail.setSubject(subject);
mail.setFrom(javaMailSenderProperties.getUsername());
mail.setTo("fengliangliang@xiaoning.cn");
// mail.setCc("fengliangliang@xiaoning.cn");
mail.setContent(renderDataToTemplate);
mail.setAttachName("traffic_signal_warning_center" + ".xlsx");
mail.setAttach(excelBytes);
return mail;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)