java - Outlook 无法在 MimeMessage 中显示图像
问题描述
我将消息准备为 MimeMessage 并尝试在不同的邮件客户端中打开它。在所有客户端中,我的消息看起来不错,但在 Outlook 和另一个客户端中,它看起来不对
...
MimeMessage mimeMessage = new MimeMessage(session);
// Text version
final MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(email.getPlainMessage(), "text/plain");
// HTML version
final MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(email.getMessage(), "text/html");
//logo
PreencodedMimeBodyPart logo = new PreencodedMimeBodyPart(BASE_64_ENCODING);
logo.setHeader("Content-Type", IMAGE_PNG_CONTENT_TYPE + "; name=\"logo.png\"");
logo.setHeader("Content-ID", "<logo.png@01CFFF81.C72F8000>");
logo.setHeader("Content-Disposition", "inline; filename=\"logo.png\"");
logo.setHeader("Content-Transfer-Encoding", BASE_64_ENCODING);
logo.setContent(ENCODED_LOGO, IMAGE_PNG_CONTENT_TYPE);
// Create the Multipart. Add BodyParts to it.
final Multipart mp = new MimeMultipart("alternative");
mp.addBodyPart(logo);
mp.addBodyPart(textPart);
mp.addBodyPart(htmlPart);
if (Objects.nonNull(email.getFilesToAttach())) {
for (String filename : email.getFilesToAttach()) {
MimeBodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename.substring(filename.lastIndexOf(File.separator) + 1));
mp.addBodyPart(messageBodyPart);
}
}
// Set Multipart as the message's content
mimeMessage.setContent(mp);
mimeMessage.setSubject(email.getSubject());
mimeMessage.setFrom(new InternetAddress(emailConfig.getNoReplyEmailAddress()));
if (!emailConfig.getNoReplyEmailAddress().equals(email.getFromAddress())) {
List<Address> replyTo = Arrays.asList(new InternetAddress(email.getFromAddress()));
mimeMessage.setReplyTo(replyTo.toArray(new Address[replyTo.size()]));
}
mimeMessage.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email.getToAddress()));
mimeMessage.saveChanges();
...
当我在 Outlook 中发送它时,我看到我的徽标为
但在另一个邮件客户端它看起来不错
解决方案
推荐阅读
- ruby-on-rails - 当 Rails 应用程序接受来自 API 网关的请求时,如何编写路由?
- python - 如何打包文件并在 python 中使用 scapy 发送它?
- javascript - 如何使用替换器在 JSON.stringify 中使用 try/catch 捕获错误?
- sql-server - 处理 SSAS 多维数据集信号量超时时出错
- java - 如何将android资源路径转换为字符串
- javascript - React(HTML 文件)中出现意外的标记“<”
- python - 根据列表中的订单对 django 查询集进行排序
- c# - 递归 linq 查询以从给定的 id 获取父列表或子列表
- mongodb - MongoDB:在多个字段或数组上使用索引
- angular - ngx-datatable row-detail 中的动态组件