Для того что-бы отправить письмо в OctoberCMS нужно всего-лишь знать как его отправить по средствам Laravel и учитывать некоторые особенности OctoberCMS (хаха).
Вроде бы стандартная задача, но в то-же время, мне почему-то понадобилось время что-бы разобраться, а по сему пишу эту запись.
Итак задача, мы имеем следующие переменные:
- $mail = ‘mraak@mail.ru’; # Адрес (или адреса через запятую) куда отправлять письмо
- $to ‘Александр’; # Поле кому
- $sender = ‘miirtt@gmail.com’; # Адрес отправителя
- $from = ‘Алла’; # Поле от кого
- $subj = ‘Октябрь это круто’; # Тема письма
- $body ='<h1>Это заголовок</h1>А тут какой-то текст.’; # Тело письма (в формате html)
Данные в переменных имеются, теперь нужно это как-то отправить в виде письма. В OctoberCMS для того что-бы отправить письмо, желательно (но не обязательно) иметь его шаблон. Мы будет отправлять письмо с пустым шаблоном, он не будет в себе содержать ничего, просто будет демонстрировать функционал. Для этого зайдём в Settings > Mail templates и нажмём кнопочку «New template»
В качестве кода шаблона мы написали слово «epmty». В секции HTML мы напишем вот такой код
1 2 3 4 5 |
<html> <body> {{ html|raw }} </body> </html> |
Шаблоны писем в OctoberCMS так-же обрабатываются шаблонизатором twig из примера мы видим что в шаблон мы посылаем одну единственную переменную $html как это выглядит в коде, в том месте где мы посылаем письмо:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$mail = explode(',',$mail); // Создали массив из писем если их много (или даже одно, не важно) if(Mail::send('empty', ['html' => htmlspecialchars_decode($body)], function($message) use ($from, $mail, $to, $subj, $sender) { $message->from($sender, $from); $message->to($mail, $to); $message->subject($subj); })) { // Письмо отправлено } else { // Письмо не отправлено } |
Другими словами в этом коде написано следующее: С помощью фасада Mail вызвать статический метод send в котом необходимо указать три параметра: 1) Код шаблона письма 2) Массив с данными передающимися в шаблон 3) Анонимную функцию которая с помощью методов фасада конфигурирует отправку. Что-бы наши переменные $from, $mail, $to, $subj, $sender «проникли внутрь анонимной функции» используем оператор use.
В случае удачно отправки, фасад Mail вернёт true, по этому мы можем использовать оператор if. Это всё что нужно знать что-бы отправить письмо по средствам OctoberCMS. Для более углублённого изучения данной темы можно воспользоваться следующими ссылками:
https://octobercms.com/docs/services/mail
https://laravel.com/docs/5.2/mail