HTML email в Drupal 9

Для отправки писем, Drupal 9 использует реализации интерфейса MailInterface (core/lib/Drupal/Core/Mail/MailInterface.php). И в коробке сразу же имеется реализация — класс PhpMail (core/lib/Drupal/Core/Mail/Plugin/Mail/PhpMail.php). С ним все отлично, но вот только в функции форматирования письма вновь (аналогично как и в Drupal 7) вызывается функция, зачищающая HTML теги письма MailFormatHelper::htmlToText().

Нам подходит весь код класса, за исключением строки #49, в которой производится обработка текста письма.

Потому я создаю свой класс на основе данного.

А чтобы добавить класс в проект нам нужно оформить его в виде плагина, где мы разместим собственную имплементацию MailInterface. Назовем его myhtmlmail. Кроме того, в коннотации класса нужно указать своё описание (исправим то, что скопировали из класса PhpMail:

Далее, чтобы не копипастить весь код, я приведу текст нового файла с изменениями и сокращениями:

Итак, отличий всего 3:

  1. изменено пространство имен (namespace)
  2. изменена коннотация и имя класса
  3. удалена одна строка

Для создания модуля нам потребуется создать еще один текстовый файл — описатель нашего модуля — myhtmlmail.info.yml (лежит в корне папки модуля).

Как видите — для работы требуется drupal:mailsystem. Это компонент позволит настроить ваш проект на использование объявленного нами класса из адинки Drupal. Настройки находятся по адресу /admin/config/system/mailsystem. Выбираем ‘Html mailer’ в качестве форматтера и отправителя.

Чтобы не запутаться — вот вся структура и архив:

Написать комментарий

Мало букафф? Читайте есчо !

Как в Drupal 9 получить URL изображения, сохраненного в поле media

Июль 27, 2021 г.

Чтобы извлечь адрес изображения из картинки в поле типа media, требуется ряд преобразований с использованием Entity объектов Drupal. Предполагается, что вы уже загрузили entity с полем типа media (в примере называется - field_media) в какую то ...

Читать

Пишем логи в Drupal 9

Октябрь 8, 2021 г.

Привычная функция watchdog, которую мы использовали в 6/7 версиях, к девятке пережила эволюцию до сервиса логирования. Бывшее ранее: [crayon-662c583b03b2e197360906/] Сейчас выглядит так: [crayon-662c583b03b3a871936564/] Помимо того, ...

Читать

 

Комментарии к «HTML email в Drupal 9»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: