Продолжим.
Наверняка получая e-mail вы сталкивались с тем, что некоторые письма выглядят как обычный текст и хорошо когда почтовый клиент превращает ссылки в ссылки, а не оставляет их текстом, но есть случаи когда не превращает и ссылки приходится копировать из письма вручную.
Такие письма неудобно читать, особенно если они большие. Для разработчиков в них неудобно делать акценты на какую-то информацию, их невозможно сделать в стиле вашего сайта и вообще такие письма банально выглядят некрасиво.
И тут на помощь приходит HTML.
В JohnCMS теперь можно отправлять полноценные письма в html формате. Более того в письмах есть поддержка шаблонов. В письмах как и на всем сайте есть основной шаблон, который является общим практически для всех страниц (header/footer). Сам текст письма - это контентная область, которая в разных письмах может выглядеть по разному.
Базовых шаблонов может быть несколько и каждый шаблон сообщения может использовать любой базовый шаблон.
Всё это позволит вам менять базовый шаблон не меняя все шаблоны писем. Например: вы можете сделать несколько шаблонов на все времена года, зимний, летний, весенний, осенний и менять их когда это необходимо. При этом вам нужно будет поменять всего лишь 1 файл, а шаблоны писем менять не придется вовсе.
Теперь вернёмся к технической части.
Как вы наверное знаете отправка письма с сайта не самая быстрая операция, особенно если отправляется много писем (если не знали, то теперь знаете).
Нельзя заставлять пользователей ждать пока отправится сообщение и загрузится страница. Отправка сообщений должна выполняться не в момент когда пользователь заходит на страницу, а отдельно в фоновом режиме (желательно на cron).
Для решения этой проблемы в JohnCMS теперь есть таблица в которой сохраняются сообщения и потом автоматически отправляются. Благодаря этому пользователь не "зависает" пока отправляется сообщение и так же благодаря этому открываются новые возможности для организации небольших рассылок и прочего.
Пример добавления сообщения в очередь на отправку:
$email = (new \Johncms\Mail\EmailMessage());
$email->create(
[
'locale' => 'ru', // Язык, на котором будет отправлено сообщение
'template' => 'system::mail/templates/registration', // Шаблон сообщения
'fields' => [ // Массив полей, который будет передан в шаблон.
'email_to' => 'example@example.com', // Обязательное поле (e-mail получателя).
'name_to' => 'Имя получателя',
'subject' => 'Тема сообщения',
'user_name' => 'Василий',
'user_login' => 'user_login',
],
]
); Поля email_to, name_to, subject будут использоваться при отправке сообщения, но они так же будут доступны и в шаблоне.Ну и на этом пока всё)
З.Ы. В прикрепленном файле пример готового письма.