Outlook не может показать изображение в MimeMessage - PullRequest
0 голосов
/ 03 июля 2018

Я готовлю свое сообщение как 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

но в других почтовых клиентах это выглядит хорошо

...