Symfony 2 Swiftmailer + Amazon SES: не удалось пройти аутентификацию на SMTP-сервере с именем пользователя XXXXXXXXXXXXXXXX с использованием 2 возможных аутентификаторов

Я знаю, что этот вопрос уже задавали раньше, но любой из прочитанных ответов стал решением для этого сценария с Symfony2 + Swiftmailer + Amazon SES.

Я настроил данные учетной записи Amazon SES для Swiftmailer в Symfony2, вся информация верна, имя пользователя и пароль. Однако по какой-то странной причине я не догоняю Symfony2. Swiftmailer выдает мне эту ошибку при отправке электронной почты.

Failed to authenticate on SMTP server with username "XXXXXXXXXXXXXXXX" using 2 possible authenticators

Вот что я получил в 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%"

И параметры.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: [email protected]
    locale: en
    secret: ThisTokenIsNotSoSecretChangeIt
    debug_toolbar: true
    debug_redirects: false
    use_assetic_controller: true

Размещение деталей smtp Gmail вместо Amazon SES работает нормально и правильно отправляет электронную почту. Но с конфигурацией Amazon SES это не так. Повторяю, имя пользователя правильное, оно работает с библиотекой Amazon SES Mailer, но не работает с интегрированным в Symfony Swiftmailer.

Какие-то мысли?


person emorales    schedule 07.07.2014    source источник


Ответы (3)


Все ваши параметры конфигурации, я думаю, в порядке, как в документации Symfony2, говорится http://symfony.com/doc/current/cookbook/email/cloud.html

Если с библиотекой Amazon SES Mailer, которая является частью AWS SDK, это работает, проверьте, используете ли вы правильные учетные данные для решения SMTP с Swiftmailer в Symfony2.

При использовании AWS SDK вы используете ключи доступа AWS для доступа к SES API и возможности отправлять электронную почту с помощью Amazon SES Mailer, включенного в этот SDK.

Когда вы используете другую библиотеку, такую ​​как Swiftmailer, вы будете отправлять электронную почту через интерфейс SMTP Amazon SES, для этого требуются учетные данные SMTP, а не ключи доступа AWS.

Эти учетные данные SMTP генерируются из настроек SMTP в консоли SES, и именно их следует использовать при использовании SMTP для отправки электронной почты с помощью amazon SES.

Ознакомьтесь с этой документацией http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

person elvismdev    schedule 07.07.2014

Я знаю, что это старый вопрос, но я просто хочу кое-что добавить, так как я провел последние 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

Это полностью решило проблему раз и навсегда.

person Tio    schedule 23.05.2018
comment
Я также обновил документацию github.com/symfony/symfony-docs/commit/ :) Спасибо, @tio! - person Небојша Камбер; 27.05.2018
comment
Спасибо, решение заменить + на %2B сработало отлично! - person Robert Saylor; 07.07.2020

Для последующего использования вы можете создать учетные данные SMTP через консоль, как описано в Получение учетных данных Amazon SES SMTP.

Как я выяснил на собственном горьком опыте, довольно легко сгенерировать неправильный тип учетных данных IAM, а затем задаться вопросом, почему вы не проходите аутентификацию. :)

person Leo Bedrosian    schedule 16.12.2014