Symfony swiftmailer через SMTP Gmail на локальный хост openssl ошибка

После обновления до php 5.6 (Mac OS X Sierra) я не могу отправлять почту в моей локальной тестовой среде.

Но, к сожалению, доставка почты через swiftmailer в Symfony не работает.

Это ошибка:

[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Что я обнаружил до сих пор:

Поскольку php 5.6 openssl кажется требованием: http://php.net/manual/en/migration56.openssl.php

Потому что после обновления я вообще не мог использовать file_get_contents без этой ошибки, так что я сделал, чтобы указать
openssl.cafile =
в моем php ini, как я нашел здесь: https://andrewyager.com/2016/10/04/php-on-macos-sierra-cant-access-ssl-data/

Теперь file_get_contents снова работает, но я не могу отправлять письма swiftmailer через smtp.

Это мой конфиг swiftmailer:

SwiftMailer:

transport:        "smtp"host:             "smtp.gmail.com"username:         "%mailer_user%"password:         "%mailer_password%"auth_mode:        login
port:             587
encryption:       tls
delivery_address: "%mailer_delivery_address%"spool:            { type: memory }

Должен ли я предоставить свое кафе в любом другом месте Symfony / swiftmailer?

Я уже нашел это: PHP — Swiftmailer, использующий STARTTLS и самозаверяющие сертификаты
Но такие решения жестко закодировать нельзя, потому что я хочу развернуть кодовую базу, не меняя ее каждый раз. Я предпочитаю решать эту проблему на системном уровне.

2

Решение

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

Вы должны добавить следующее в ваш config.yml (или, если вы предпочитаете отделить test / dev от prod в последующем config_dev.yml):

swiftmailer:
# ... your other config
stream_options:
ssl:
allow_self_signed: true
verify_peer: false

Таким образом, это должно работать, и вы разделили dev и prod env.

Смотрите также здесь: https://github.com/symfony/swiftmailer-bundle/tree/master/Tests/DependencyInjection/Fixtures/config/yml

6

Другие решения

Вы можете создать свой собственный сервис, который бы реализовывал это поведение.
Проверьте это решение, также вы можете создать собственную фабрику для Swift_SmtpTransport:

https://github.com/swiftmailer/swiftmailer/issues/544#issuecomment-220103233

0

По вопросам рекламы [email protected]