Я работаю на локальном сервере с 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 для работы.
Все еще не работает
Если вы попытаетесь отправить письмо с помощью команды swiftmailer:email:send, что будет на выходе?
Я отредактировал вопрос, чтобы добавить решение. Спасибо за комментарии и помощь;)
Рад, что ты решил свою проблему. Удалите решение из своего вопроса, вставьте его в ответ и примите свой ответ, это может помочь другим.




По умолчанию почтовая программа Symfony отправляет сообщения электронной почты немедленно, но, как вы настроили, он будет «буферизовать» электронные письма, а не отправлять их напрямую.
spool: { type: 'memory' }
Отправка сообщений из спула выполняется отдельно с помощью консольной команды:
php bin/console swiftmailer:spool:send --env=dev
@ см. другие документы здесь
ОБНОВИТЬ: Как сказал @nek в первом комментарии, спул памяти немедленно отправляет почту (если не произошло никакого исключения). Команда spool: send требуется только при использовании файловой очереди.
Спул memory отправляет почту немедленно (если не возникло никаких исключений). Команда spool:send требуется только при использовании катушки file.
У меня была такая же проблема с 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]
Итак, я установил пакет true / punycode через:
No IDN encoder found (install the intl extension or the true/punycode package
composer req true/punycode
и теперь электронные письма отправляются нормально также с буферной памятью.
Можете ли вы попробовать удалить параметры порт, хост, режим авторизации и повторить отправку плз