Фреймворк электронной почты
Общая информация
Pimcore Email Framework предоставляет удобный способ создания и отправки электронных писем.
Для работы используются следующие компоненты:
- Document\Email
- Pimcore\Mail
Класс Pimcore\Mail расширяет стандартный класс \Symfony\Component\Mime\Email.
Если настройки электронной почты заданы в вашем файле config/config.yaml, они будут автоматически применены при инициализации объекта Pimcore\Mail.
Рекомендуется настроить параметры электронной почты в файле config/config.yaml:
pimcore:
email:
sender:
name: 'Pimcore Demo'
email: demo@pimcore.com
return:
name: ''
email: ''
и адреса электронной почты для отладки должны быть настроены в административной панели Settings > System > Debug > Debug Email Addresses.
Если включен режим отладки, все электронные письма будут отправляться получателям электронной почты для отладки, определенным в Settings > System > Debug > Debug Email Addresses. Кроме того, к письму добавляется отладочная информация (кому должно было быть отправлено электронное письмо), а тема содержит префикс "Debug email:".
Это делается путем расширения Symfony Mailer с помощью встроенной службы RedirectingPlugin, которая вызывает beforeSendPerformed перед отправкой письма и sendPerformed сразу после отправки письма.
Электронные письма отправляются с помощью транспорта, и для \Pimcore\Mailer требуются транспорты: main для отправки электронных писем
и pimcore_newsletter для отправки рассылок (если используются специальные настройки для рассылки новостей и включен и установлен PimcoreNewsletterBundle), которые необходимо настроить в вашем config.yaml, например,
framework:
mailer:
transports:
main: smtp://user:pass@smtp.example.com:port
pimcore_newsletter: smtp://user:pass@smtp.example.com:port
Пожалуйста, обратитесь к разделу Transport Setup для получения более подробной информации о том, как это можно настроить.
Pimcore предоставляет тип Document Email, в котором вы можете указать получателей ... (дополнительная информация
здесь) и переменные Twig.
Чтобы отправить электронное письмо, вы просто создаете Email Document в пользовательском интерфейсе Pimcore, определяете тему,
получателей, добавляете динамические заполнители... и передаете этот документ объекту Pimcore\Mail. Все
неприятные вещи (создание корректных URL-адресов, встраивание CSS, компиляция меньшего количества файлов, рендеринг документа ..)
автоматически обрабатываются объектом Pimcore\Mail.
В разделе Settings объекта Email Document вы можете использовать Full Username <user@domain.fr> или Full Username (user@domain.fr), чтобы задать полное имя пользователя.
Пример использования
Давайте предположим, что мы создали Email Document в пользовательском интерфейсе Pimcore (/email/myemaildocument), который выглядит следующим образом:

Чтобы отправить этот документ по электронной почте, нам просто нужно написать следующий фрагмент кода в нашем экшене:
//динамические параметры
$params = array('firstName' => 'Pim',
'lastName' => 'Core',
'product' => \Pimcore\Model\DataObject::getById(73613)
);
//отправка email
$mail = new \Pimcore\Mail();
$mail->to('example@pimcore.org');
$mail->setDocument('/email/myemaildocument');
$mail->setParams($params);
$mail->send();
вы можете получить доступ к параметрам в содержимом вашего письма.
Hello {{ firstName }} {{ lastName }}
Regarding the product {{ product.getName() }} ....
Отправка обычного текстового электронного письма:
$mail = new \Pimcore\Mail();
$mail->to('example@pimcore.org');
$mail->text("This is just plain text");
$mail->send();
Отправка Email с форматированным текстом (HTML):
$mail = new \Pimcore\Mail();
$mail->to('example@pimcore.org');
$mail->bcc("bcc@pimcore.org");
$mail->html("<b>some</b> rich text");
$mail->send();
Ограничения в "песочнице"
При отправке писем управляемые пользователем шаблоны twig отображаются в "песочнице" с ограничительными политиками безопасности для тегов, фильтров и функций. Пожалуйста, используйте следующую конфигурацию, чтобы улучшить отображение шаблонов:
pimcore:
templating_engine:
twig:
sandbox_security_policy:
tags: ['if']
filters: ['upper']
functions: ['include', 'path']
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.