РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
805 of 1361 menu

Канал email

Канал email - это один из встроенных транспортных каналов компонента Notifier. Он отвечает за доставку уведомлений через электронную почту. Чтобы задействовать этот канал, уведомление должно реализовать метод asEmailMessage, возвращающий объект EmailNotification, либо быть помеченным соответствующим образом. Получатели задаются через класс EmailRecipient, в котором первым параметром передаётся email-адрес, а вторым - необязательное имя.

Синтаксис

// Отправка уведомления через канал email $notifier->send($notification, new EmailRecipient('user@example.com'));

Пример

Давайте создадим простое уведомление, которое отправляется по электронной почте. Для этого реализуем метод asEmailMessage:

<?php namespace AppNotification; use SymfonyComponentNotifierNotificationNotification; use SymfonyComponentNotifierNotificationEmailNotification; use SymfonyComponentNotifierNotificationEmailEmailNotification; use SymfonyComponentNotifierRecipientEmailRecipient; use SymfonyComponentMimeEmailEmail; class ArticleNotification extends Notification { public function __construct( private string $subject, private string $content ) { } public function asEmailMessage(EmailRecipient $recipient): EmailNotification { $email = (new Email()) ->from('noreply@example.com') ->to($recipient->getEmail()) ->subject($this->subject) ->text($this->content); return new EmailNotification($email); } } ?>

Пример

Теперь отправим это уведомление через Notifier:

<?php namespace AppController; use AppNotificationArticleNotification; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentNotifierNotifierInterface; use SymfonyComponentNotifierRecipientEmailRecipient; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/notify', name: 'article_notify')] public function notify(NotifierInterface $notifier): Response { $notification = new ArticleNotification('Hello', 'Article body'); $notifier->send($notification, new EmailRecipient('user@example.com')); return new Response('sent'); } } ?>

Результат выполнения кода:

"sent"

Пример

Если нужно отправить уведомление сразу нескольким получателям, передайте массив объектов EmailRecipient:

<?php namespace AppController; use AppNotificationArticleNotification; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentNotifierNotifierInterface; use SymfonyComponentNotifierRecipientEmailRecipient; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/notify-many', name: 'article_notify_many')] public function notifyMany(NotifierInterface $notifier): Response { $notification = new ArticleNotification('Hello', 'Article body'); $recipients = [ new EmailRecipient('user1@example.com'), new EmailRecipient('user2@example.com'), ]; $notifier->send($notification, ...$recipients); return new Response('sent to many'); } } ?>

Результат выполнения кода:

"sent to many"

Смотрите также

  • класс Notification,
    который является базовым для всех уведомлений
  • метод asEmailMessage,
    который формирует email-сообщение для отправки
  • класс EmailRecipient,
    который представляет получателя email
  • канал email,
    который отвечает за доставку через электронную почту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить