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

Август 1, 2021 г.

Ядро и модули объявляют множество токенов подстановки. Рассмотрим как получить доступ к глобальному объекту типа \Drupal\Core\Utility\Token и выполнить подстановку в строке. Ядро предоставляет экземпляр объекта через следующий запрос: [crayon-61439b4e5ddfd221248957/] ...

Читать

Программный рендер меню в Drupal 9

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

Продолжаю публиковать сниппеты кода для drupal 9, на этот раз несколько полезных вещей, связанных с рендерингом меню. Рендер меню по известному id меню Вы знаете идентификатор, вам нужен рендер: [crayon-61439b4e5df7f527959976/] Рендер ...

Читать

 

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

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



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