Как добавить встроенное изображение в электронное письмо в формате HTML с помощью MicronautJAVA

Программисты JAVA общаются здесь
Anonymous
Как добавить встроенное изображение в электронное письмо в формате HTML с помощью Micronaut

Сообщение Anonymous »

Я использую Micronaut для веб-приложения, и мне нужно отправлять электронные письма. Мы используем шаблон скорости для тела электронного письма, и нам нужно включить изображение в текст. Я обнаружил, что есть три способа:
  • изображение в кодировке Base64
  • прикрепление идентификатора контента
  • Глобальная URL-ссылка
Поскольку изображения в формате html в кодировке Base64 не поддерживаются большинством почтовых клиентов и поскольку предоставленное изображение не является общедоступным , Я попробовал прикрепить идентификатор контента. Но мне не удалось заставить его работать с Micronaut.
У меня есть упрощенный фрагмент кода:

Код: Выделить всё

Map modelMap = new HashMap();
modelMap.put("xyz", "aaaaaaa");
TemplateBody body =
new TemplateBody("mail/mail-body.vm", modelMap);

byte[] image = IOUtils.resourceToByteArray("logo.png", getClass().getClassLoader());
Attachment logoAttachment = Attachment.builder()
.id("logo")
.filename("something.png")
.contentType(MediaType.IMAGE_PNG)
.content(image)
.build();

Email.Builder emailBuilder = Email.builder()
.from(sender)
.to(recipient)
.subject("some-subject")
.body(body)
.attachment(createLogoAttachment());

emailSender.send(emailBuilder);
HTML-шаблон скорости выглядит следующим образом:

Код: Выделить всё


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed

do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad

minim veniam

quis nostrud exercitation ullamco laboris nisi ut - ${xyz}

[img]cid:logo[/img]

Но в этом случае изображение представляет собой всего лишь обычное вложение, а не встроенное в html-содержимое. Вместо этого отображается альтернативный текст. Как я могу сказать Micronaut, что это вложение должно быть встроенным? Кажется, что предоставленный мною атрибут id вообще не используется, и тело html не видит вложение.
Необработанное письмо выглядит так:

Код: Выделить всё

MIME-Version: 1.0

------=_Part_0_2107679308.1690376383642
Content-Type: multipart/alternative;
boundary="----=_Part_1_706751112.1690376383646"

------=_Part_1_706751112.1690376383646
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit



Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed

do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad

minim veniam

quis nostrud exercitation ullamco laboris nisi ut - aaaaaaa

[img]cid:logo[/img]

------=_Part_1_706751112.1690376383646--

------=_Part_0_2107679308.1690376383642
Content-Type: image/png; name=something.png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=something.png

iVBORw0KGgoAAAANSUhEUgAABCkAAAFkCAYAAAANCGFyAAAAAXNSR0IArs4c6QAAAARnQU1BAACx ...

------=_Part_0_2107679308.1690376383642--
Я не вставлял все изображение в формате Base64

Подробнее здесь: https://stackoverflow.com/questions/767 ... -micronaut

Вернуться в «JAVA»