Symfony 2 Swiftmailer + Amazon SES:无法使用2个可能的身份验证器在用户名为"XXXXXXXXXXXXXXXX"的SMTP服务器上进行身份验证

emo*_*les 5 email swiftmailer amazon-web-services symfony amazon-ses

我知道之前已经提出过这个问题,但任何给定的响应都已经成为Symfony2 + Swiftmailer + Amazon SES的解决方案.

我在Symfony2中设置了Swiftmailer的Amazon SES帐户详细信息,所有信息都是正确的,用户名和密码.然而,由于一些奇怪的原因,我没有赶上Symfony2 Swiftmailer在发送电子邮件时丢失了这个错误.

Failed to authenticate on SMTP server with username "XXXXXXXXXXXXXXXX" using 2 possible authenticators
Run Code Online (Sandbox Code Playgroud)

这是我在config.yml中得到的

#app/config/config.yml

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    port:      "%mailer_port%"
    encryption: "%encryption%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
Run Code Online (Sandbox Code Playgroud)

和parameters.yml

#app/config/parameters.yml

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: null
    database_name: mydatabase
    database_user: dbuser
    database_password: dbpass
    mailer_transport: smtp
    mailer_host: email-smtp.us-east-1.amazonaws.com
    mailer_port: 587
    encryption: tls
    mailer_user: XXXXXXXXXXXXXXXX
    mailer_password: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    mailer_from: support@mycompany.com
    locale: en
    secret: ThisTokenIsNotSoSecretChangeIt
    debug_toolbar: true
    debug_redirects: false
    use_assetic_controller: true
Run Code Online (Sandbox Code Playgroud)

放置Gmail smtp详细信息而不是Amazon SES可以正常工作并正确发送电子邮件.但是使用Amazon SES配置却没有.我再说一遍,用户名是正确的,它的工作原理与亚马逊SES梅勒库,但没有做它的Symfony集成Swiftmailer.

一些想法?

elv*_*dev 6

我认为您的所有配置参数都很好,就像 Symfony2 文档中所述http://symfony.com/doc/current/cookbook/email/cloud.html

如果 Amazon SES Mailer 库是 AWS 开发工具包的一部分,它可以工作,然后检查您是否在 Symfony2 中使用 Swiftmailer 的 SMTP 解决方案使用正确的凭证。

当您使用 AWS 开发工具包时,您可以使用 AWS 访问密钥访问 SES API,并能够使用该开发工具包中包含的 Amazon SES 邮件程序发送电子邮件。

当您使用其他库(如 Swiftmailer)时,您将通过 Amazon SES SMTP 接口发送电子邮件,它需要 SMTP 凭证,而不是 AWS 访问密钥。

此 SMTP 凭据是从 SES 控制台中的 SMTP 设置生成的,这些凭据是使用 SMTP 向亚马逊 SES 发送电子邮件时应使用的正确凭据。

检查此文档 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html


Tio*_*Tio 5

我知道这是一个古老的问题,但是我只想添加一些内容,因为我过去3个小时试图解决这个确切的问题。

在Symfony V4.0中,通过环境变量通过以下方式完成Swift Mailer的配置:

MAILER_URL=smtp://email-smtp.us-east-1.amazonaws.com:587?encryption=tls&username=YOUR_SES_USERNAME&password=YOUR_SES_PASSWORD

这里所示

问题是URL,这意味着如果字符串中包含任何特殊字符,则需要对其进行编码,在这种情况下,密码上面带有一个加号。:

AKD23$ADADADJJ$123123LKIOU8jUIJ8j+9IJHJW8JNN4nnn2

直到我更改为:

AKD23$ADADADJJ$123123LKIOU8jUIJ8j%2B9IJHJW8JNN4nnn2

一劳永逸地彻底解决了这个问题。

  • 我也更新了文档https://github.com/symfony/symfony-docs/commit/15300a6ad26571fa84821b22344d12f92937567f:)谢谢@tio! (2认同)