Перейти к основному содержимому

Фреймворк электронной почты

Общая информация

Pimcore Email Framework предоставляет удобный способ создания и отправки электронных писем.

Для работы используются следующие компоненты:

Класс 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), который выглядит следующим образом:

Pimcore Mail

Чтобы отправить этот документ по электронной почте, нам просто нужно написать следующий фрагмент кода в нашем экшене:

//динамические параметры 
$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']


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.