Дата обновления перевода 2021-06-08

Справочник конфигурации Почтовой программы (SwiftmailerBundle)

SwiftmailerBundle интегрирует лабораторию Swiftmailer в приложения Symfony, чтобы отправлять электронные письма. Все эти опции конфигурируются под ключом swiftmailer в конфигурации вашего приложения.

1
2
3
4
5
# отображает значения конфигураци по умолчанию, определенные Symfony
$ php bin/console config:dump-reference swiftmailer

# отображает реальные значения конфигурации, используемые вашим приложением
$ php bin/console debug:config swiftmailer

Note

При использовании XML, вы должны использовать пространство имен http://symfony.com/schema/dic/swiftmailer, а связанная XSD-схема доступна тут: https://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd

Конфигурация

url

тип: string

Полная конфигурация SwiftMailer с использованием формата URL вроде DSN.

Пример: smtp://user:pass@host:port/?timeout=60&encryption=ssl&auth_mode=login&...

transport

тип: string по умолчанию: smtp

Конкретный метод транспорта для доставки электронных писем. Валидные значения:

  • smtp
  • gmail (см. Using Gmail to Send Emails)
  • mail (устаревший в SwiftMailer начиная с версии 5.4.5)
  • sendmail
  • null (то же самое, что установить disable_delivery как true)

username

тип: string

Имя пользователя при использовании smtp в качестве транспорта.

password

тип: string

Пароль при использовании smtp в качестве транспорта.

command

тип: string по умолчанию: /usr/sbin/sendmail -bs

Команда, выполняемая транспортом sendmail.

host

тип: string по умолчанию: localhost

Хост для соединения при использовании smtp в качестве транспорта.

port

тип: string по умолчанию: 25 или 465 (в зависимости от encryption)

Порт при использовании smtp в качестве транспорта. По умолчанию равен 465, если шифрование - ssl, и 25 во всех других случаях.

timeout

тип: integer

Срок ожидания в секундах при использовании smtp в качестве транспорта.

source_ip

тип: string

IP-адрес источника при использовании smtp в качестве транспорта.

local_domain

тип: string

New in version 2.4.0: Опция local_domain была представлена в SwiftMailerBundle 2.4.0.

Имя домена для использования в команде HELO.

encryption

тип: string

Режим шифрования при использовании smtp в качестве транспорта. Валидные значения: tls, ssl, или null (обозначает отсутствие шифрования).

auth_mode

тип: string

Режим аутентификации при использовании smtp в качестве транспорта. Валидные значения: plain, login, cram-md5, или null.

spool

Чтобы узнать детали о спулинге электронных писем, см. /email/spool.

type

тип: string по умолчанию: file

Метод, используемые для хранения спул-сообщений. Валидные значения: memory и``file``. Пользоваельский спул должен быть возможен путём создания сервиса, под названием swiftmailer.spool.myspool и установки его значения, как myspool.

path

тип: string по умолчанию: %kernel.cache_dir%/swiftmailer/spool

При использовании спула file - это путь, по которому будут храниться спул- сообщения.

sender_address

тип: string

Если установлен, то все сообщения будут доставлены с этим адресом в качестве адреса “обратного пути”, на который должны приходить возвращённые сообщения. Внутренне это обрабатывается классом Swift Mailer Swift_Plugins_ImpersonatePlugin.

antiflood

threshold

тип: integer по умолчанию: 99

Используется с Swift_Plugins_AntiFloodPlugin. Это количество электронных писем, которые можно отправить до перезагрузки транспорта.

sleep

тип: integer по умолчанию: 0

Используется в Swift_Plugins_AntiFloodPlugin. Это количество секунд, на которое включается спящий режим для перезагрузки транспорта.

delivery_addresses

тип: array

Note

В предыдущих версиях эта опция называлась delivery_address.

Если установлнеа, то все электронные письма будут отправлены по этим адресам, вместо того, чтобы отправляться настоящим получателям. Это часто полезно при разработке. Например, установив эту опцию в файле config/packages/dev/swiftmailer.yaml, вы можете гарантировать, что все письма, отправленные во время разработки, будут в одной или нескольких конкретных учётных записях.

Использует Swift_Plugins_RedirectingPlugin. Настоящие получатели доступны в заголовках X-Swift-To, X-Swift-Cc и X-Swift-Bcc.

delivery_whitelist

тип: array

Используется в комбинации с delivery_address или delivery_addresses. Если установлена, то электронные письма, совпадающие с любой из этих схем, будут отправлены как обычно, а также по адресам delivery_address или delivery_addresses. Чтобы узнать больше, прочтите статью Как работать с электронными письмами во время разработки.

disable_delivery

тип: boolean по умолчанию: false

Если “true”, то transport будет автоматически установлен как null, и ни одно письмо не будет доставлено.

logging

тип: boolean по умолчанию: %kernel.debug%

Если “true”, сборщик данных Symfony будет активирован для Swift Mailer, и эта информация будет доступна в профилировщике.

Tip

Следующие опции могут быть установлены через переменные окружения, используя синтаксис %env()%: url, transport, username, password, host, port, timeout, source_ip, local_domain, encryption, auth_mode. Чтобы узнать больше, см. статью /configuration/external_parameters.

Исползование нескольких почтовых программ

Вы можете конфигурировать несколько почтовых программ, группируя их под ключом mailers (почтовая программа по умолчанию определяется опцией default_mailer):

  • YAML
    1
    2
    3
    4
    5
    6
    7
    swiftmailer:
        default_mailer: second_mailer
        mailers:
            first_mailer:
                # ...
            second_mailer:
                # ...
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    <?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
            https://symfony.com/schema/dic/services/services-1.0.xsd
            http://symfony.com/schema/dic/swiftmailer
            https://symfony.com/schema/dic/swiftmailer/swiftmailer-1.0.xsd">
    
        <swiftmailer:config default-mailer="second_mailer">
            <swiftmailer:mailer name="first_mailer"/>
            <swiftmailer:mailer name="second_mailer"/>
        </swiftmailer:config>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    $container->loadFromExtension('swiftmailer', [
        'default_mailer' => 'second_mailer',
        'mailers' => [
            'first_mailer' => [
                // ...
            ],
            'second_mailer' => [
                // ...
            ],
        ],
    ]);
    

Каждая почтовая программа регистрируется автоматически в виде сервиса с такими ID:

// ...

// возвращает первую почтовую программу
$container->get('swiftmailer.mailer.first_mailer');

// также возвращает вторую почтовую программу, так как она - программа по умолчанию
$container->get('swiftmailer.mailer');

// возвращаеть вторую почтовую программу
$container->get('swiftmailer.mailer.second_mailer');

Caution

При конфигурации нескольких почтовых программ, опции должны помещаться под соответствующим ключом конфигурации программы, а не прямо под ключом swiftmailer.

При использовании автомонтирования внедряется только почтовая программа по умолчанию, при вводе некоторого аргумента с подсказками в классе \Swift_Mailer. Если вам нужно внедрить другую программу в какой-то сервис, исспользуйте любую из этих альтернатив, основанных на функции service binding:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    # config/services.yaml
    services:
        _defaults:
            bind:
                # внедряет вторую почтовую программу при вводе аргументов конструуктора с подсказками в \Swift_Mailer
                \Swift_Mailer: '@swiftmailer.mailer.second_mailer'
                # внедряет вторую почтовую программу когда аргумент конструктора сервиса называется $specialMailer
                $specialMailer: '@swiftmailer.mailer.second_mailer'
    
        App\Some\Service:
            # внедряет вторую почтовую программу только для этого аргумента этого сервиса
            $differentMailer: '@swiftmailer.mailer.second_mailer'
    
        # ...
    
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <!-- config/services.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"
        xsi:schemaLocation="http://symfony.com/schema/dic/services
            https://symfony.com/schema/dic/services/services-1.0.xsd">
    
        <services>
            <defaults autowire="true" autoconfigure="true" public="false">
                <!-- внедряет вторую почтовую программу при вводе аргументов конструуктора с подсказками в \Swift_Mailer -->
                <bind key="\Swift_Mailer">@swiftmailer.mailer.second_mailer</bind>
                <!-- внедряет вторую почтовую программу когда аргумент конструктора сервиса называется $specialMailer -->
                <bind key="$specialMailer">@swiftmailer.mailer.second_mailer</bind>
            </defaults>
    
            <service id="App\Some\Service">
                <!-- внедряет вторую почтовую программу только для этого аргумента этого сервиса -->
                <argument key="$differentMailer">@swiftmailer.mailer.second_mailer</argument>
            </service>
    
            <!-- ... -->
        </services>
    </container>
    
  • PHP
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    // config/services.php
    use App\Some\Service;
    use Psr\Log\LoggerInterface;
    
    
    $container->register(Service::class)
        ->setPublic(true)
        ->setBindings([
            // внедряет вторую почтовую программу при вводе аргументов конструуктора с подсказками в \Swift_Mailer
            \Swift_Mailer::class => '@swiftmailer.mailer.second_mailer',
            // внедряет вторую почтовую программу когда аргумент конструктора сервиса называется $specialMailer
            '$specialMailer' => '@swiftmailer.mailer.second_mailer',
        ])
    ;
    

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