今天无聊,在网上看有人说做一个发卡站不错,于是去找来源码安装了,整个程序安装下来非常轻松,很快就安装好了,但是最后设置邮件发送的时候却把我卡住了,总是邮件发送失败,由于独角发卡默认支持tls和ssl发邮件,我也按照邮件客户端的设置,在后台进行了相应的设置,但是不管我用tls还是ssl,都是无法发送,tls发送提示连接超时,ssl发送提示“Connection could not be established with host,localhost and "stream_socket_enable_crypto(): SSL operation failed with code 1" ”考虑到邮件服务器是采用https的,所以重点考虑ssl发送邮件错误的解决方法。终于在网上搜到https://stackoverflow.com/questions/44423096/localhost-and-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,
],
],  

依葫芦画瓢,发送成功!

第二种:修改vendorswiftmailerlibclassesSwiftTransportStreamBuffer.php line 259 ish. comment out the $options = array(); and add the below.

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

这个我没有验证,大家又遇到的自行测试吧。

另外,上面也提到,忽略ssl校验有一定的安全风险,实际上phpmailer也已经针对这种情况提出了解决方案,兼顾验证的情况下发出邮件,具体如下:

$mail->SMTPOptions = array (
'ssl' => array(
'verify_peer'  => true,
'verify_depth' => 3,
'allow_self_signed' => true,
'peer_name' => 'smtp.example.com',
'cafile' => '/etc/ssl/ca_cert.pem',
)
);

Last modification:December 1st, 2023 at 02:06 pm
如果觉得我的文章对你有用,请随意赞赏