Java 在outloouk中,收到的文件名包含错误字符

Java 在outloouk中,收到的文件名包含错误字符,java,outlook,Java,Outlook,在我的java应用程序中,我想使用MIMessageHelper发送电子邮件: 我的文件名是–TestFileüa.PNG 我的代码在这里: SimpleMailMessage mail= new SimpleMailMessage(templateMessage); mail.setTo(personMail); mail.setSubject(subject); mail.setText(content); MimeMessage message = mailSender.createMim

在我的java应用程序中,我想使用MIMessageHelper发送电子邮件:

我的文件名是–TestFileüa.PNG

我的代码在这里:

SimpleMailMessage mail= new SimpleMailMessage(templateMessage);
mail.setTo(personMail);
mail.setSubject(subject);
mail.setText(content);
MimeMessage message = mailSender.createMimeMessage();
try {
          MimeMessageHelper messageHelper = new MimeMessageHelper(message,true);
          messageHelper.setFrom(mail.getFrom());
          messageHelper.setTo(mail.getTo());
          messageHelper.setSubject(mail.getSubject());
          messageHelper.setText(mail.getText());     
          messageHelper.addAttachment(fileName, new ByteArrayResource(attchmentFile));
    } catch (MessagingException e) {
          e.printStackTrace();
    }
文件已正确发送,但在outlook中,我的文件的特殊字符未正确显示


看起来文件名的编码有问题。在创建mime辅助对象时,我会尝试设置适当的字符编码。例如:

 MimeMessageHelper messageHelper = 
         new MimeMessageHelper(message, true, "UTF-8");
在这一行之前,

messageHelper.addAttachment(fileName, new ByteArrayResource(attchmentFile));
我补充说:

fileName = MimeUtility.encodeText(filename);

这工作做得很好

好的,我建议您1检查文件名是否已损坏,然后再开始编写此代码,2检查带有od或Windows等效项的mime编码消息,以查看问题是否存在或Outlook本身是否存在。