2016-08-18 114 views
1

我無法在laravel 5發送一封電子郵件,當我點擊發送返回此消息SSL錯誤Laravel 5.2

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 

這裏是我的.ENV文件

MAIL_DRIVER=smtp 
MAIL_HOST=smtp-relay.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=**********@gmail.com 
MAIL_PASSWORD=********* 
MAIL_ENCRYPTION=ssl 

文件的郵件。 php

return [ 
'driver' => env('MAIL_DRIVER', 'smtp'), 
'host' => env('MAIL_HOST', 'smtp-relay.gmail.comt'), 
'port' => env('MAIL_PORT', 587), 
'from' => ['address' => null, 'name' => null], 
'encryption' => env('MAIL_ENCRYPTION', 'ssl'), 
'username' => env('MAIL_USERNAME'), 
'password' => env('MAIL_PASSWORD'), 
'sendmail' => '/usr/sbin/sendmail -bs', 
]; 

我研究了幾個小時,但無法解決這個問題,有什麼建議嗎? P/S:我使用Windows 10和XAMPP的Web服務器

+0

您是否嘗試過使用'tls'加密,而不是'ssl'? – James

回答

3

.env的文件更改:

MAIL_DRIVER = SMTP向MAIL_DRIVER =郵件

+0

由於某種原因,它的工作原理! :) – Shirker

0

這裏有兩個可能的解決方案: 1)擺脫「tls」並將MAIL_ENCRYPTION保留爲空白。 2)如果你使用的是MacOS Sierra,並且希望保留你的'tls'設置,請在你的終端中鍵入以下兩行/應該: $ sudo mkdir -p/usr/local/libressl/etc/ssl/certs $ sudo curl -o /usr/local/libressl/etc/ssl/cert.pem https://curl.haxx.se/ca/cacert.pem

這兩行基本上可以幫助您創建默認文件夾並從curl.haxx.se導入最新的證書存儲。 這裏是源文章中,我得到了,如果有興趣:https://andrewyager.com/2016/10/04/php-on-macos-sierra-cant-access-ssl-data/comment-page-1/#comment-52

希望它可以幫助

0

轉到位置\供應商\ swiftmailer \ LIB \類\雨燕\傳輸\ StreamBuffer.php 在行259和評論如下:

//$options = array();

和補充。

$options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true);

+0

「供應商」目錄中的文件不打算編輯。如果您認爲存在錯誤,請將該存儲庫分叉並將請求拉入主服務器。 – svgrafov

+0

當然,但它是一個臨時解決方案。 – Matu95