尝试通过Laravel 5.5项目从生产服务器发送邮件时出现此错误:
[2018-07-28 16:05:57] production.ERROR: stream_socket_enable_crypto(): SSL: Success {"exception":"[object] (ErrorException(code: 0): stream_socket_enable_crypto(): SSL: Success at /home/html/my-project/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:94)
同时,我可以在本地环境中通过相同的服务发送邮件,而不会出现任何错误。我还能够从具有类似设置的同一服务器上的Laravel 5.4项目发送邮件。我检查了.env
文件以及config/mail.php
对其的读取方式,一切似乎都是正确的。
MAIL_DRIVER="smtp"
MAIL_HOST="smtp.sparkpostmail.com"
MAIL_PORT=587
MAIL_ENCRYPTION="TLS"
MAIL_AUTHENTICATION="AUTH LOGIN"
MAIL_PASSWORD="mypassword"
MAIL_USERNAME="SMTP_Injection"
这里接受的答案(how to fix stream_socket_enable_crypto(): SSL operation failed with code 1)告诉我将以下内容添加到config/mail.php
:
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
我尝试了这个,但是遇到了同样的错误。我还读到这不是安全的生产解决方案。此答案(localhost and "stream_socket_enable_crypto(): SSL operation failed with code 1"指出错误是“因为您是从localhost连接的,这是不安全的,并且被连接阻止。您可以通过将localhost连接更改为基于SSL的方式来避免这种情况一。”但是我该如何在生产中做到这一点?