symfony SwiftMailerBundle -- Как отправить e-mail сообщение
Primary tabs
Отправка email сообщений в Symfony организована с помощью SwiftMailerBundle.
- Для начала установим его, если ещё не установлен (проверьте в списке бандлов, подключаемых в Resourses/AppKernel.php).
В консоли вводим команду:composer require symfony/swiftmailer-bundle
и после:
composer update
- Как использовать в контроллере:
public function indexAction($name, Swift_Mailer $mailer) { // Создаём объект сообщения класса Swift_Message $message = (new Swift_Message('Hello Email')) ->setFrom('send_example.com') ->setTo('recipient_example.com') ->setBody( $this->renderView( 'templates/emails/registration.html.twig', [ 'name' => $name, ]), 'text/html' ); // И отправляем его с помощью объекта Swift_Mailer $mailer->send($message); } - Настраиваем конфигурации в config.yml:
swiftmailer: mailer_transport: smtp mailer_host: smtp.yandex.ru // Это почта, с которой будут отправляться сообщения mailer_user: example_yandex.ru mailer_password: mypassword - Если всё сделали так, ошибок не обнаружено, но сообщения не отправляются, предлагаю вам создать собственный объект Swift_Mailer, а не использовать созданный приложением:
public function indexAction($name) { // Создаём объект транспорта Swift_SmtpTransport(). // При желании параметры можно получать из конфигов $transport = Swift_SmtpTransport::newInstance('smtp.yandex.ru', 465, 'ssl') ->setUsername('example_yandex.ru') ->setPassword('mypassword'); // ... // Отправку осуществляем с помощью нового Swift_Mailer(), использующего наш транспорт Swift_Mailer::newInstance($transport)->send($message); } - Если вы хотите организовать отправку писем в сервисе, как здесь, вы не сможете реализовать метод контроллера renderView(). Создадим объект шаблона Twig_Environment в конструкторе:
/** * @var string */ private $twig; public function __construct(Twig_Environment $twig) { $this->twig = $twig; }и рендеринг будет выглядеть так:
$message = (new Swift_Message('Hello Email')) ->setFrom('send_example.com') ->setTo('recipient_example.com') ->setBody( // Здесь теперь объект шаблона $this->twig->render( 'templates/emails/registration.html.twig', [ 'name' => $name, ]), 'text/html');
Источники
https://symfony.com/doc/current/email.html
http://forum.simplacms.ru/topic/9389-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D0%BC%D1%8B%D0%BB%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-stmp/
- Log in to post comments
- 19751 reads