2016-08-18 96 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