Linux服务器下PHPMailer发送邮件失败的问题解决

臭大佬 2017-08-19 16:47:48 2035
php 
简介 Linux服务器下PHPMailer发送邮件失败的问题解决

这两天一直在调试PHPMailer发送邮件功能,一直都没有找到问题所在,头都快炸了.本地环境发送邮件没有问题,之前买的虚拟空间里面用的同一套代码,发送也没有问题.但是git到阿里云lunix服务器之后,邮箱就发不了了,
然后查浏览器的报错信息,发现这个

59c6082d79eeb.png

百度了一下,看了N个帖子,有的说是表单里面用了ajax提交,有的说服务器占用太高,要释放一些内存......

各个帖子里面说的方法,我都有试一试,但是无果,最后想到了是不是我的环境问题,

首先,查看了一下,phpinfo,看看相应的扩展有没有打开:

配置都是正常开启的,应该不是配置问题了,于是我想是不是25端口被占用了?

到xshell里面  netstat -tnlp 一下

59c60aaa89641.png

果然被占用了,查了一下,465端口(SMTPS)更好用,

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

查看端口是否开启

xshell操作:  firewall-cmd --query-port=465/tcp

no 

开启:  firewall-cmd --add-port=465/tcp

success

截图在这里:

59c60c0b6d8a7.png

好的,现在修改一下代码

$mail->Port = 25;


改成

$mail->SMTPSecure = 'ssl';
$mail->Port = 465;


测试结果
59c60d7c55873.png

OK,被这个问题烦了两天,今天终于解决了!!!

总结一下,这问题为什么会困扰我这么久呢?

归根结底是我对linux不够熟悉,好好补知识吧,linux在以后的工作中是必不可少的!