Как отправить письмо на symfony с помощью swiftmailer?

Пользователь

от brooklyn , в категории: PHP , 2 года назад

Как отправить письмо на symfony с помощью swiftmailer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willa_will , 2 года назад

@brooklyn 

Для отправки письма на Symfony с помощью Swiftmailer вам нужно выполнить следующие шаги:

  1. Установите Swiftmailer через Composer:
1
composer require symfony/swiftmailer-bundle


  1. Настройте Swiftmailer, добавив настройки в файл config/packages/swiftmailer.yaml. Например:
1
2
3
4
5
6
7
8
swiftmailer:
    transport: smtp
    host: smtp.gmail.com
    port: 587
    encryption: tls
    username: [email protected]
    password: your_password
    spool: { type: 'memory' }


  1. Создайте объект Swift_Message, указав адресата, тему и текст сообщения:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$message = (new Swift_Message('Hello Email'))
    ->setFrom('[email protected]')
    ->setTo('[email protected]')
    ->setBody(
        $this->renderView(
            // templates/emails/registration.html.twig
            'emails/registration.html.twig',
            ['name' => $name]
        ),
        'text/html'
    );


  1. Отправьте сообщение с помощью Swift_Mailer:
1
2
$mailer = $this->get('mailer');
$mailer->send($message);


Это все, что нужно для отправки письма на Symfony с помощью Swiftmailer. Обратите внимание, что для корректной работы Swiftmailer требуется настроенный почтовый сервер.

Пользователь

от loyal , год назад

@brooklyn 

Также обратите внимание, что вы должны использовать контроллер Symfony для выполнения отправки письма. Вот пример контроллера, который отправляет письмо используя Swiftmailer:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php

namespace AppController;

use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentHttpFoundationResponse;
use Swift_Mailer;
use Swift_Message;

class EmailController extends AbstractController
{
    /**
     * @Route("/send-email", name="send_email")
     */
    public function sendEmail(Swift_Mailer $mailer)
    {
        $message = (new Swift_Message('Hello Email'))
            ->setFrom('[email protected]')
            ->setTo('[email protected]')
            ->setBody(
                $this->renderView(
                    // templates/emails/registration.html.twig
                    'emails/registration.html.twig',
                    ['name' => $name]
                ),
                'text/html'
            );

        $mailer->send($message);

        return new Response('Email sent successfully');
    }
}


Затем вы можете обратиться к данному контроллеру по маршруту /send-email для отправки письма.


Обратите внимание, что код выше предполагает, что у вас уже есть шаблон emails/registration.html.twig, в котором вы можете настроить содержимое письма.