java - Spring:附件的 MimeMessageHelper 编码

标签 java spring email content-type mime-message

在 Spring 中,有一个选项可以设置邮件编码:

MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");

这对于电子邮件的主题和消息非常有用。

但是,如果有附件,将使用 JVM 的默认编码,并在电子邮件附件部分的 Content-Type 中指定(即使在应用程序中全局指定编码和/或在部署时通过参数指定编码) jar )。

有人设法告诉 Spring 对邮件附件也使用特定的编码吗?我知道有一种方法可以使用这种结构来做到这一点:

messageHelper.addAttachment(filename, new InputStreamSource() {
    @Override
    public InputStream getInputStream () throws IOException {
        return file.getInputStream();
        }
    }, "text/plain; charset=UTF-8");

问题是现在我必须手动描述每个附件类型和编码。如果没有其他办法的话,我想这是唯一的办法了。

最佳答案

最后,这就是我解决它的方法(不是最干净的方法,但工作正常):

private String determineContentType(String fileName) {
        String contentType;

        if (fileName.contains(".txt")) {
            contentType = "text/plain; charset=" + mailProperties.getEncoding();
        }
        else if (fileName.contains(".xls")) {
            contentType = "application/vnd.ms-excel; charset=" + mailProperties.getEncoding();
        }
        else if (fileName.contains(".pdf")) {
            contentType = "application/pdf; charset=" + mailProperties.getEncoding();
        }
        else if (fileName.contains(".doc")) {
            contentType = "application/msword; charset=" + mailProperties.getEncoding();
        }
        else if (fileName.contains(".xml")) {
            contentType = "text/xml; charset=" + mailProperties.getEncoding();
        }
        else if (fileName.contains(".zip")) {
            contentType = "application/zip; charset=" + mailProperties.getEncoding();
        }
        else {
            contentType = "text/plain; charset=" + mailProperties.getEncoding();
        }
        return contentType;
    }

关于java - Spring:附件的 MimeMessageHelper 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237383/

相关文章:

PHP电子邮件附件

java - ResourceBundle [messages] 未找到 MessageSource : Can't find bundle for base name messages

java - 4 个线程添加到一个 jlist

java - 是否可以在pom中定义javacpp-preset的环境?

spring - 如何使用 Spring Boot 和 Tomcat 指定我的 .keystore 文件?

java - 在 Spring 中允许并发的正确 Bean 的 proxyMode 是什么?

java - Spring 安全 : Error creating bean/No bean is defined

python - Django 邮件未保存(文件后端)

java - 从 Android 中的视频图像中获取帧

c# - 发送电子邮件时的线程