Gmailを使用してメールを送信し、すべてが完全に機能していましたが、突然機能しなくなりました。そしてそれは私にこれを示しています
ErrorException in StreamBuffer.php line 94:
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
in StreamBuffer.php line 94
at HandleExceptions->handleError('2', 'stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed', 'C:\xampp\htdocs\coparmex\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php', '94', array())
at stream_socket_enable_crypto(resource, true, '9') in StreamBuffer.php line 94
at Swift_Transport_StreamBuffer->startTLS() in EsmtpTransport.php line 313
at Swift_Transport_EsmtpTransport->_doHeloCommand() in AbstractSmtpTransport.php line 118
at Swift_Transport_AbstractSmtpTransport->start() in Mailer.php line 79
at Swift_Mailer->send(object(Swift_Message), array()) in Mailer.php line 385
at Mailer->sendSwiftMessage(object(Swift_Message)) in Mailer.php line 171
そして、これは私のローカルホストでのみ起こり、ウェブホストはうまく機能します。何が起こっているのか分かりません:c
これらは私のGmail設定です
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=gmail
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
SSL証明書のエラーです。適切な証明書なしでSSL接続(暗号化された安全な接続)を使用しようとしています。
これは、ローカルホストから接続しているためです。これは安全ではなく、接続によってブロックされます。 localhost接続をSSLベースの接続に変更することで、これを回避できます。
詳細については、 このリンク を参照してください。
以下のコードを/config/mail.phpに追加する必要があります(作業はlaravel 5.4)
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
sultan Ahmadが示唆するように、ベンダーのコードを変更しないでください。
編集者注:SSL検証を無効にすると、セキュリティに影響します。SSL/HTTPS接続の信頼性を検証しないと、悪意のある攻撃者は信頼できるエンドポイント(GitHubや他のリモートGitホストなど)になりすますことができ、あなたは 中間者攻撃 。 これを解決策として使用する前に、セキュリティの問題を完全に理解してください。
同じ問題があり、認証セキュリティのレベルを削除することで解決できました。つまり、ある時点で、Gmailから電話番号(第2レベルの認証)が求められました。この2番目のレベルを削除したとき、私は再び幸せでした。お役に立てば幸いです。
こんにちは。サーバーレベルでも非常に便利です。編集\ vendor\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php 259行目$ options = array();をコメントアウトします以下を追加します。
$options = array();
$options['ssl'] = array('verify_peer' => false,
'verify_peer_name' => false, 'allow_self_signed' => true);
Laravel 6.0