Symfony 4 Swift Mailer не отправляет письма

Я работаю на локальном сервере с Symfony 4 и FOSUserBundle. Мне не удается получить подтверждение по электронной почте при регистрации нового пользователя.

Я пробовал следующий пост, но в моем случае он не работает: Symfony 4 SwiftMailer Gmail: электронное письмо не отправлено

Я безуспешно пытался настроить SwiftMailer для отправки с использованием gmail smtp server и mailtrap smtp server. Также я проверил dev.log и ошибок не обнаружил.

Я не уверен, какой файл подходит для настройки Swift Mailer (.env или packages / dev / swiftmailer.yaml). Сейчас конфигурация следующая:

.env файл:

MAILER_URL=gmail://***@gmail.com:***@localhost

swiftmailer.yaml:

swiftmailer:
transport:        gmail
username:         ***@gmail.com
password:         ***
host:             localhost
port:             465
encryption:       ssl
auth-mode:        login
spool: { type: 'memory' }
stream_options:
    ssl:
        allow_self_signed: true
        verify_peer: false
        verify_peer_name: false 

Любые идеи? Не обязательно использовать Gmail в качестве SMTP-сервера.

Заранее спасибо.

РЕШЕНИЕ:

Проблема была в файле /config/test/fos_user.yaml:

Я изменился:

service:
  mailer: 'fos_user.mailer.noop'

К:

service:
  mailer: 'fos_user.mailer.default'

Документация: http://symfony.com/doc/master/bundles/FOSUserBundle/emails.html

Также я принял менее безопасные соединения из настроек учетной записи Gmail для работы.

Можете ли вы попробовать удалить параметры порт, хост, режим авторизации и повторить отправку плз

Mcsky 12.04.2018 18:00

Все еще не работает

Alvaro Garcia Solano 12.04.2018 19:35

Если вы попытаетесь отправить письмо с помощью команды swiftmailer:email:send, что будет на выходе?

Philippe-B- 13.04.2018 02:41

Я отредактировал вопрос, чтобы добавить решение. Спасибо за комментарии и помощь;)

Alvaro Garcia Solano 13.04.2018 10:40

Рад, что ты решил свою проблему. Удалите решение из своего вопроса, вставьте его в ответ и примите свой ответ, это может помочь другим.

Philippe-B- 13.04.2018 15:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
5
7 328
2

Ответы 2

По умолчанию почтовая программа Symfony отправляет сообщения электронной почты немедленно, но, как вы настроили, он будет «буферизовать» электронные письма, а не отправлять их напрямую.

spool: { type: 'memory' }

Отправка сообщений из спула выполняется отдельно с помощью консольной команды:

php bin/console swiftmailer:spool:send --env=dev

@ см. другие документы здесь

ОБНОВИТЬ: Как сказал @nek в первом комментарии, спул памяти немедленно отправляет почту (если не произошло никакого исключения). Команда spool: send требуется только при использовании файловой очереди.

Спул memory отправляет почту немедленно (если не возникло никаких исключений). Команда spool:send требуется только при использовании катушки file.

j-guyon 13.04.2018 10:52

У меня была такая же проблема с Symfony 4. Моя версия пакетов swiftmailer / swiftmailer v6.1.0 пакет symfony / swiftmailer v3.2.2 Когда я использовал конфигурацию: swiftmailer: url: '% env (MAILER_URL)%' катушка: {тип: 'память'}

Электронные письма не были отправлены, и никаких исключений не произошло. Затем я меняю настройки на:

swiftmailer: url: '%env(MAILER_URL)%' spool: type: 'file' path: '%kernel.cache_dir%/swiftmailer/spool'

И попробовал команду:

php bin/console swiftmailer:spool:send --env=dev -vvv

И увидел ошибку:

[Swift_SwiftException]
No IDN encoder found (install the intl extension or the true/punycode package
Итак, я установил пакет true / punycode через:

composer req true/punycode

и теперь электронные письма отправляются нормально также с буферной памятью.

Другие вопросы по теме