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’ в качестве форматтера и отправителя.

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

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

Error Code 1366 of Mysql при записи переводов в базу tmgmt_deepl

Октябрь 4, 2024 г.

Типично ошибка 1366 связана с тем, что кто то пытается записать символы с кодами не соответствующими кодовой таблице символов, установленной для таблицы в базе данных. Но в нашем случае речь идет о иной проблеме. Drupal использует utf8mb4 для текстовых ...

Читать

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

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

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

Читать

Кеширование JSON ответа в Drupal

Июль 6, 2023 г.

У нас есть контроллер, который выдаёт json ответ. Добавим кеширование. Начнем с определения контроллера. Пусть сконфигурирован следующий mymodule.routing.yml: [crayon-694fd48d6bfde812581931/] Это значит, что у нас создан класс PublicApi в ...

Читать

Создаём программно url alias в Drupal 9

Август 28, 2021 г.

Сниппет кода, демонстрирующий как alias создаётся в Drupal 9. Ранее (в 8й версии) это был сервис ядра path.alias_storage, и код выглядел так: [crayon-694fd48d6c279223612930/] В 9й версии хранилище перенесли в entityTypeManager и потому выглядит ...

Читать
 

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

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



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