15

この構成でメールを送信しようとしています:

return [

    'driver'     => 'smtp',

    'host'       => 'mail.mydomain.com',

    'port'       => 26,

    'from'       => ['address' => 'mailer@mydomain.com', 'name' => 'Mailer'],

    'encryption' => 'tls',

    'username'   => env('MAIL_USERNAME'),

    'password'   => env('MAIL_PASSWORD'),

    'sendmail'   => '/usr/sbin/sendmail -bs',

    'pretend'    => false,

];

フォームを送信すると、次のエラーが表示されます。

ErrorException in StreamBuffer.php line 95:
stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

人々が同じライブラリで問題を解決したように見えるこの解決策を見つけましたが、Laravelでそれを解決することはできません。

https://github.com/PHPMailer/PHPMailer/issues/368

4

4 に答える 4

8

そのリンクで、あなたが提供した解決策は簡単です。

正しい解決策は、SSL 設定を修正することです。PHP のせいではありません。

それを修正する方法は?でconfig/mail.php'driver' => env('MAIL_DRIVER', 'smtp'),あるべきです'driver' => env('MAIL_DRIVER', 'mail'),(クレジット: Danyal Sandeelo )

于 2015-06-08T16:22:09.880 に答える
4

私の場合、問題は SSL に関連していました。私のSMTPには自己署名証明書があり、laravelはPHP 5.6の上で実行されていました。これにより、「allow_self_signed」コンテキスト変数がfalseに無効になり、「verify_peer」が有効になり、電子メールの送信時にエラーが発生します。

swiftmailer コードをハッキングしたくなかったので、サーバーの認証局 (CA) ファイルを、laravel を実行するシステムの信頼できる CA として追加しました。

私はsmtpサーバーのCA証明書を取得しました。

-----BEGIN CERTIFICATE-----
MIIElTCCA32gAwIBAgIJAMZjjNg64RQwMA0GCSqGSIb3DQEBCwUAMIGNMQswCQYD
VQQGEwJVUzEMMAoGA1UECBMDTi9BMQwwCgYDVQQHEwNOL0ExJDAiBgNVBAoTG1pp
...
5a8a4QEwWmnAOgHetsOCvhfeGW3yAJPD8Q==
-----END CERTIFICATE-----

そして、ubuntu 14.04 を持つ私の laravel マシンで、/usr/local/share/ca-certificates/my_cert.crt. ファイルを終了し、.crt誰でも読めるようにすることが重要です。

次に呼び出すupdate-ca-certificatesと、サーバーの有効な CA のリストに証明書が追加されます。

于 2016-07-27T06:03:03.353 に答える