Symfony 2中多个帐户的swiftmailer配置

enf*_*lee 4 smtp swiftmailer symfony

我使用gmail发送邮件,所以我像这样配置'config.yml'

swiftmailer:
transport: %mailer_transport%
encryption: %mailer_encryption%
auth_mode: %mailer_auth%
host:      %mailer_host%
username:  %mailer_user%
password:  %mailer_password%
Run Code Online (Sandbox Code Playgroud)

'parameters.yml'喜欢这个

mailer_transport:  smtp
mailer_encryption: ssl
mailer_auth:       login
mailer_host:       smtp.gmail.com
mailer_user:       lee@gmail.com
mailer_password:   ******
Run Code Online (Sandbox Code Playgroud)

现在我想使用更多的邮件帐户来发送不同目标的邮件.例如:使用lee@gmail.com发送邮件进行欢迎;使用lee1@gmail.com发送邮件重置密码.

我该怎么配置swiftmailer?

小智 21

如果您使用的是Swiftmailer 2.3.3,您可以简单地完成所有操作:

在parameters.yml中添加:

mailer2_transport: smtp
mailer2_encryption: ssl
mailer2_auth_mode: login
mailer2_host: smtp.gmail.com
mailer2_user: your@gmail.com
mailer2_password: *******
Run Code Online (Sandbox Code Playgroud)

在config.yml中进行更改:

swiftmailer:
    default_mailer: mailer
    mailers:
        mailer:
            transport: %mailer_transport%
            host:      %mailer_host%
            username:  %mailer_user%
            password:  %mailer_password%
            encryption: %mailer_encryption%
            auth_mode: %mailer_auth_mode%
        mailer2:
            transport: %mailer2_transport%
            host:      %mailer2_host%
            username:  %mailer2_user%
            password:  %mailer2_password%
            encryption: %mailer2_encryption%
            auth_mode: %mailer2_auth_mode%
Run Code Online (Sandbox Code Playgroud)

在代码中如果你写:

$mailer = $this->get('swiftmailer.mailer.mailer2');
Run Code Online (Sandbox Code Playgroud)

你将从你的部分获得设置;

如果你写:

$mailer = $this->get('swiftmailer.mailer.default');
Run Code Online (Sandbox Code Playgroud)

要么

$mailer = $this->get('mailer'); // default configuration
Run Code Online (Sandbox Code Playgroud)

你将使用默认部分的设置;

  • 只是想指出你必须有一个名为'default'的'默认'邮件程序,否则会为你创建一个虚拟'默认'邮件程序,它将被用作默认邮件.我相信这是一个错误. (3认同)