Конфигурация 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 (см. /email/gmail)
  • mail (устаревший в SwiftMailer начиная с версии 5.4.5)
  • sendmail
  • null (то же самое, что установить disable_delivery как true)

username

тип: string

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

password

тип: string

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

host

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

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

port

тип: string по умолчанию: 25 или 465 (в зависимости от `шифрования`_)

Порт при использовании 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_dev.yml, вы можете гарантировать, что все письма, отправленные во время разработки, будут в одной или нескольких конкретных учётных записях.

Использует 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.