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

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

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

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

Conditional Form Fields в Drupal

Сентябрь 27, 2021 г.

Логика полей или условные поля - это удобная фича в Form API друпал. Она позволяет формализовать кучу мелкой логики на фронт-енд, связанной с взаимодействием пользователя с вашей формой. Здесь я приведу пару примеров использования, а углубиться ...

Читать

Устанавливаем флажок FILE_STATUS_PERMANENT для файла в DRUPAL 9

Август 7, 2021 г.

Если файл загружен через поле, созданное в конструкторе полей какого либо entity Drupal, то соответствующий модуль, предоставляющий функционал загрузки файла, сам обеспечит установку необходимого статуса. Что если поле было создано программно, и требуется ...

Читать

 

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

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



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