gpt4 book ai didi

java - Spring:附件的 MimeMessageHelper 编码

转载 作者:行者123 更新时间:2023-12-01 09:06:24 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com