Методы для работы с электронной почтой. Класс создан на основе библиотеки Swift Mailer.
Создает и отправляет электронное письмо.
Пример
Email::send([
'from'=>'john@doe.com',
'to'=>'bill@smith.com',
'subject'=>'Уведомление',
'htm'=>$htm,
]);
Параметр | Описание | Примечание |
---|---|---|
'to' | Почтовые ящики получателей |
Допустимые форматы почтовых ящиковСтрока (RFC 2822)'to'=>'john@doe.com'
'to'=>'John Doe <john@doe.com>'
'to'=>'john@doe.com, Bill Smith <bill@smith.com>'
Массив (Swift Mailer): 'to'=>['john@doe.com', ...]
'to'=>['john@doe.com'=>'John Doe', ...]
'to'=>['john@doe.com', 'bill@smith.com'=>'Bill Smith']
В скриптах сайта рекомендуется использовать почтовые ящики, заданные в настройках сайта, и доступные через метод Blox::info('site','emails'). |
'from' | Почтовый ящик отправителя | |
'reply-to' | Почтовые ящики, на которые следует посылать ответ. | Формат такое же, как для параметров 'to' и 'from'. |
'subject' | Тема письма (string) | |
'htm' | Сообщение в виде гипертекста (string) | Создавать весь html документ не нужно — заголовок документа и остальные разделы будут созданы автоматически. |
'txt' | Альтернативный обычный текст (string) необязательный параметр | Если отправляется голый текст, то предпочтительнее использовать именно этот параметр, оставив $data['htm'] пустым. Не забудьте проставить в тексте переносы строк "\n" |
'together' | Отправить письмо всем адресатам за один раз (boolean) | По умолчанию, когда этот параметр не задан, письма будут отправлены одно за другим, отдельно каждому получателю. Если же этот параметр сделать true, то каждый получатель в полученном письме увидит почтовые ящики остальных получателей. |
'attachments' | Массив присоединяемых файлов (array) |
Элементами массива могут быть строки или массивы.
|
'transport' | Настройки почтового транспорта |
Элементами массива могут быть строки или массивы.
В скриптах сайта можно импользовать значение Blox::info('site','emails','transport'), заданного в настройках сайта. |
Перечислим первоочередные меры, которые позволят сообщениям с сайта достигать адресатов, не попадая в спам. Допустим, вы отправляете письма с сайта www.mysite.com.
Почтовый ящик для получения писем с сайта (to)
Письма желательно отправлять на ящик, с тем же доменным именем, что и сайт, например:
$data['to'] = 'to@mysite.com';
Если выполнить это требование не получается, применяйте п.4 или п.5.
Почтовый ящик для отправки писем с сайта (from)
Письма желательно отправлять с ящика, с тем же доменным именем, что и сайт, например:
$data['from'] = 'from@mysite.com';
Не ставьте сюда реальный ящик пользователя, введенный в форму — для него используйте параметр 'reply-to'.
Без дополнительных настроек (см. п.4 или п.5) для отправки писем не годятся ящики вида @mail.ru, @bk.ru, @list.ru, @inbox.ru от компании "Mail.ru Group".
Реальный почтовый ящик отправителя (reply-to)
$data['reply-to'] = 'xxx@zzz.com';
Используйте параметр "ящик для ответа" (reply-to) в качестве реального ящика отправителя, тогда если получатель в своей почтовой программе нажмет на кнопку "Ответить", то ответ придет автору письма, а не на административный ящик 'from'.
Сделайте записи SPF, DKIM, DMARC в настройках домена (DNS) сайта. Записи приведены в порядке важности:
Преобразует почтовый ящик (ящики) в единый формат, в частности, совместимый со Swift Mailer.
Использовать данный метод перед методом Email::send() не обязательно — там ящики и так форматируются и проходят проверку.
Пример
$emails2 = Email::format('john@doe.com, Bill Smith <bill@smith.com>');
/*
Возвращает массив:
'john@doe.com' => '',
'bill@smith.com' => 'Bill Smith',
*/