Просмотр поста

.
Simba
Кадило крутится, лавэха мутится

Продолжим.
Наверняка получая 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 будут использоваться при отправке сообщения, но они так же будут доступны и в шаблоне.

Ну и на этом пока всё)
З.Ы. В прикрепленном файле пример готового письма.
Прикрепленные файлы: