Outlook无法将图像显示到MimeMessage中

时间:2018-07-03 12:05:34

标签: java image email outlook html-email

我将邮件准备为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中时,我的徽标为

Broken logo

但是在其他邮件客户端中看起来不错

0 个答案:

没有答案