Эта неделя была для меня сложной, дело в том, что мне нужно было показать своего рода отчет в HTML с некоторыми стилями на нем.

Это было то, чего я никогда раньше не делал, первое, что я сделал, это спросил у коллег, как действовать дальше. Один из них посоветовал мне использовать препроцессор для HTML почтового приложения под названием (MJML), я должен был попробовать, в результате инструмент оказался очень гибким, в нем есть несколько предопределенных тегов, которые упрощают работу, вроде Bootstrap. как инструмент. Я протестировал его с созданной мной почтовой службой, и результаты были в порядке.

Но я не был полностью удовлетворен результатом, мне не понравился дизайн, и у меня также была проблема с изображением холста (я расскажу об этом позже), поэтому я попробовал другой инструмент (еще одна рекомендация от коллеги) , Mailchimp, который является службой электронного маркетинга, а также предоставляет инструмент для создания уведомлений по электронной почте в формате HTML, и я начал создавать один шаблон с статическими данными, и… это сработало :D

Я продолжил добавлять переменные в HTML, тест и все в порядке. Отлично, у меня было все, что мне нужно, кроме самого важного компонента в уведомлении канвы (изображения).

Здесь начинается мой кошмар, я добавил переменную изображения в файл HTML (изображение представляло собой строку SVG, сгенерированную из библиотеки, которая обрабатывает холст), и, к удивлению, это сработало на почтовом клиенте Mac, проверяя Gmail, и изображение не было отображается. Я немного погуглил и наткнулся на это изображение:

После нескольких попыток заставить его работать, я ни к чему не пришел. Разочарованный, после целого дня работы над той же проблемой я попросил помощи у старшего коллеги, и он предложил создать файл PDF, чтобы у меня не было ограничений на HTML (вот что Я думал).

Я начал искать некоторые библиотеки с открытым исходным кодом на Java, я нашел одну iTextPDF, это инструмент, который имеет возможность обрабатывать HTML и конвертировать его в PDF. Приступаю к настройке в проекте, используя тот шаблон, который у меня уже был, потом тест и не получилось. Изображение также не отображалось, а стили в HTML не были совместимы с обработкой этого инструмента.

У меня почти не было вариантов, кроме как создать новый HTML-шаблон с нуля, и я это сделал, все работало, но изображение автомобиля, которое я тестировал в это время, было ссылкой на изображение, хранящееся на сервере, и у меня все еще был один проблема, которую нужно решить, самая важная, изображение.

Погуглив еще немного, я обнаружил, что один SVG не был разрешенным форматом файла для рендеринга в инструмент, у меня не было другого выбора, кроме как преобразовать эту строку SVG, которая у меня уже была раньше, в изображение PNG на стороне сервера (Java). Я сделал это, преобразовал в строку Base64, сослался на нее в файле и, наконец, закончил.

В качестве ретроспективы в этой ситуации старайтесь не использовать сгенерированные изображения (динамические) в файле электронной почты HTML, если это не ссылка на URL-адрес, а также создание этих HTML-шаблонов с помощью таких инструментов, как Mailchimp и MJML, было большим подспорьем, с другой стороны. Я также научился обрабатывать файлы в памяти на Java с потоками байтов.