У меня проблема с Thymeleaf , когда я пытаюсь создать электронное письмо со значками на шаблоне.Я выполнил шаги, как указано в документации См. Часть 4.3 , но в электронном письме отображаются только 2 из 3 значков.
Сначала я загружаю значки:
private byte[] loadImage(String path, String extension) {
byte[] image = new byte[0];
try {
URL file = getClass().getClassLoader().getResource(path);
BufferedImage buffer = ImageIO.read(file);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(buffer, extension, outputStream);
image = outputStream.toByteArray();
} catch (IOException exception) {
log.debug(exception.getLocalizedMessage());
}
Затем я добавляю значки к MimeMessageHelper
:
private void attachIcons(MimeMessageHelper message) {
try {
byte[] logoIconInBytes = loadImage(LOGO_ICON_PATH, "png");
InputStreamSource logoImageSource = new ByteArrayResource(logoIconInBytes);
message.addInline(LOGO_IMAGE_RESOURCE, logoImageSource, IMAGE_CONTENT_TYPE);
byte[] phoneIconInBytes = loadImage(PHONE_ICON_PATH, "png");
InputStreamSource phoneImageSource = new ByteArrayResource(phoneIconInBytes);
message.addInline(PHONE_IMAGE_RESOURCE, phoneImageSource, IMAGE_CONTENT_TYPE);
byte[] emailIconInBytes = loadImage(EMAIL_ICON_PATH, "png");
InputStreamSource emailImageSource = new ByteArrayResource(emailIconInBytes);
message.addInline(EMAIL_IMAGE_RESOURCE, emailImageSource, IMAGE_CONTENT_TYPE);
} catch (MessagingException exception) {
log.debug(exception.getLocalizedMessage());
}
}
Где:
private static final String LOGO_ICON_PATH = "data" + File.separator + "logo_example.png";
private static final String PHONE_ICON_PATH = "data" + File.separator + "phone.png";
private static final String EMAIL_ICON_PATH = "data" + File.separator + "email.png";
private static final String IMAGE_CONTENT_TYPE = "image/png";
Затем я устанавливаю переменные на context
перед отправкой электронного письма:
......
context.setVariable(LOGO_IMAGE_RESOURCE, LOGO_IMAGE_RESOURCE);
context.setVariable(PHONE_IMAGE_RESOURCE, PHONE_IMAGE_RESOURCE);
context.setVariable(EMAIL_IMAGE_RESOURCE, EMAIL_IMAGE_RESOURCE);
String content = templateEngine.process(templateName, context);
......
И в шаблоне я вызываю переменные на их соответствующих <img>
:
....
<img class="resize" th:src="|cid:${logoIcon}|" alt="Test">
....
<td class="someCssClass"> <img th:src="|cid:${phoneIcon}|" alt="phone"> </td>
<td class="someCssClass"> <img th:src="|cid:${emailIcon}|" alt="email"> </td>
....
Но значок email не отображается, проверяя DOM с Firefox Dev Tools Я нашел это:
![Doom inspection](https://i.stack.imgur.com/blHkH.png)
Вы можете видеть, что Logo и Телефон значки прикреплены, но значок Email не прикреплен.
Я изменил значок, думая, что, возможно, файл был поврежден, но ничего не изменилось.
Где проблема?
С уважением.