Как использовать облако для отправки электронных писем

Как использовать облако для отправки электронных писем

Требования к отправлению электронных писем отличаются в системе производства и в вашей установке разработки, так как вы не хотите иметь лимит в количестве писем, скорости отправки или адресах отправителей. Поэтому, использование Gmail или подобных сервисов - не вариант. Если установка и поддержание вашего собственного надёжного почтового сервиса доставляет вам слишком много головной боли, то вот простое решение: используйте облако, чтобы отправлять ваши письма.

Эта статья раскрывает, как легко интегрировать в Symfony Простой сервис электронных писем Amazon (SES).

Note

Вы можете использовать такую же технику для других почтовых сервисов, так как в большинстве случаев она заключается просто в конфигурации конечной точки SMTP для Swift Mailer.

В конфигурации Symfony, измените установки Swift Mailer transport, host, port и encryption в соответствии с информацией, предоставленной в консоли SES. Создайте ваши собственные SMTP-аттестаты в консоли SES, и завершите конфигурацию с предоставленными username и password:

  • YAML
    1
    2
    3
    4
    5
    6
    7
    8
    # app/config/config.yml
    swiftmailer:
        transport:  smtp
        host:       email-smtp.us-east-1.amazonaws.com
        port:       587 # different ports are available, see SES console
        encryption: tls # TLS encryption is required
        username:   AWS_SES_SMTP_USERNAME  # to be created in the SES console
        password:   AWS_SES_SMTP_PASSWORD  # to be created in the SES console
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!-- app/config/config.xml -->
    <?xml version="1.0" encoding="UTF-8" ?>
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:swiftmailer="http://symfony.com/schema/dic/swiftmailer"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            http://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/swiftmailer
            http://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
    
        <!-- ... -->
        <swiftmailer:config
            transport="smtp"
            host="email-smtp.us-east-1.amazonaws.com"
            port="587"
            encryption="tls"
            username="AWS_SES_SMTP_USERNAME"
            password="AWS_SES_SMTP_PASSWORD"
        />
    </container>
    
  • PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // app/config/config.php
    $container->loadFromExtension('swiftmailer', array(
        'transport'  => 'smtp',
        'host'       => 'email-smtp.us-east-1.amazonaws.com',
        'port'       => 587,
        'encryption' => 'tls',
        'username'   => 'AWS_SES_SMTP_USERNAME',
        'password'   => 'AWS_SES_SMTP_PASSWORD',
    ));
    

КЛючи port и encryption не представлены в конфигурации стандартной версии Symfony по умолчанию, но вы можете просто добавить их по необходимости.

И то всё, вы готовы начать отправлять электронные письма через облако!

Tip

Если вы используете стандартную версию Symfony, сконфигурируйте параметры в parameters.yml и используйте их в ваших файлах конфигурации. Это позволяет использование разных конфигураций Swift Mailer для каждой установки вашего приложения. Например, используйте Gmail во время разработки, а облако - в производстве.

1
2
3
4
5
6
7
8
9
# app/config/parameters.yml
parameters:
    # ...
    mailer_transport:  smtp
    mailer_host:       email-smtp.us-east-1.amazonaws.com
    mailer_port:       587 # different ports are available, see SES console
    mailer_encryption: tls # TLS encryption is required
    mailer_user:       AWS_SES_SMTP_USERNAME # to be created in the SES console
    mailer_password:   AWS_SES_SMTP_PASSWORD # to be created in the SES console

Note

Если вы планируете использовать Amazon SES, пожалуйста, отметьте следующее:

  • Вы должны подписаться на Веб-сервисы Amazon (AWS);
  • Каждый адрес отправителя, используемый в заголовке From или Return-Path (возвратный адрес), должен быть подтверждён владельцем. Вы также можете подтвердить домен целиком;
  • Изначально вы ограничены в режиме песочицы. Вам нужно запросить доступ к производству перед тем, как вы сможете отправлять письма произвольным получателям;
  • SES могут взымать деньги.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.