Intereting Posts
Как изменить текстовое поле на видимое в зависимости от того, какой элемент выбран в раскрывающемся меню? Jquery ajax fileupload через php Сортировка массива с размерами одежды и дополнительными значениями Предупреждение: openssl_pkcs7_sign (): ошибка получения закрытого ключа с использованием WAMP preg_replace <*> Вычислить время, отличающееся в минуту и ​​секунду Doctrine 2.5 Неожиданное поведение выборки ассоциации Как предотвратить загрузку страницы моего сайта через сторонний фрейм сайта iFrame Проблемы с simplexml_load_file Получить контейнер Symfony в EntityRepository TCPDF не отображает изображение с помощью writeHTML Настройка «Не найденного» поведения маршрутизации Laravel «Явное связывание» Является ли это безопасным способом вставки данных формы в базу данных MySQL? Поиск способа обработки / доступа к веб-сайтам PHP OOP Доступ к исходному коду HTML с использованием PHP или JavaScript

Symfony swiftmailer через smtp gmail при ошибке localhost 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 без этой ошибки, так что я сделал это, чтобы указать opensl.cafile = в моем php ini, как я нашел здесь: https://andrewyager.com/2016/10/ 04 / PHP-на-MacOS-Сьерра-косяка-доступ-SSL-данные /

Теперь 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 } 

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

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

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

Вы должны добавить следующее в свой 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

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

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