Конфигурация SwiftmailerBundle ("swiftmailer")

Этот справочный документ находится в процессе разработки. Он должен быть правильным, но пока ещё охвачены не все опции. Чтоб увидеть полный список опций конфигурации по умолчанию, см. Полная конфигурация по умолчанию

Ключ swiftmailer конфигурирует интеграцию Symfony с Swift Mailer, который отвечает за создание и отправку электронных писем.

Следующий раздел перечисляет все опции, доступные для конфигурирования почтовой программы. Также возможно сконфигурировать несколько почтовых программ (см. Использование нескольких почтовых программ).

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

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 в качестве транспорта.

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

Чтобы узнать детали о спулинге электронных писем, см. How to Spool Emails.

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. Чтобы узнать больше, см. статью How to Set external Parameters in the Service Container.

Полная конфигурация по умолчанию

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    swiftmailer:
        transport:            smtp
        username:             ~
        password:             ~
        host:                 localhost
        port:                 false
        encryption:           ~
        auth_mode:            ~
        spool:
            type:                 file
            path:                 '%kernel.cache_dir%/swiftmailer/spool'
        sender_address:       ~
        antiflood:
            threshold:            99
            sleep:                0
        delivery_addresses:   []
        disable_delivery:     ~
        logging:              '%kernel.debug%'
    
  • XML
     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
    <?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"
            username=""
            password=""
            host="localhost"
            port="false"
            encryption=""
            auth-mode=""
            sender-address=""
            disable-delivery=""
            logging="%kernel.debug%"
            >
            <swiftmailer:spool
                path="%kernel.cache_dir%/swiftmailer/spool"
                type="file" />
    
            <swiftmailer:antiflood
                sleep="0"
                threshold="99" />
        </swiftmailer:config>
    </container>
    

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

Вы можете сконфигурировать несколько почтовых программ, группируя их под ключом 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
            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 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', array(
        'default_mailer' => 'second_mailer',
        'mailers' => array(
            'first_mailer' => array(
                // ...
            ),
            'second_mailer' => array(
                // ...
            ),
        ),
    ));
    

Each mailer is registered as a service:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// ...

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

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

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

Caution

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

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