今天无聊,在网上看有人说做一个发卡站不错,于是去找来源码安装了,整个程序安装下来非常轻松,很快就安装好了,但是最后设置邮件发送的时候却把我卡住了,总是邮件发送失败,由于独角发卡默认支持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',
)
);