PHPMailer不能连接SMTP服务器的两种常见原因(Could not connect to SMTP host)
PHPmailer无法发送邮件,提示错误Error: Could not connect to SMTP host
出现这种情况一般有两种原因:
1.无法发出请求,本地设置问题
2.连接被stmp服务器拒绝,可能账号出问题,比如发信量大且频繁
第二种情况比较好解决,换一个登陆账号或者登陆IP就可以了。
针对第一种情况,执行以下脚本测试
[CODE_LITE]<?php $fp = fsockopen("smtp.163.com",25,&$errno,&$errstr,60); if(! $fp) echo '$errstr ($errno) <br> \n '; else echo 'ok <br> \n '; ?>[/CODE_LITE]
如果报错:Warning: fsockopen() has been disabled for security reasons。
说明fsockopen函数被禁用,PHPmailer发送Email依赖此函数。
解决方法参考《fsockopen函数被禁用的解决之道》 ,修改class.smtp.php中的代码
$this->smtp_conn = @fsockopen为
$this->smtp_conn = @pfsockopen即可。
如果报错:php_network_getaddresses: getaddrinfo failed
可能服务器DNS设置问题,导致不能解析域名、从而找不到stmp服务器。也可能服务器所在网络环境屏蔽掉stmp服务器。如果不是自己的机器,暂时没有好的解决方法。
在之前转载的一篇文章 ,将
function IsSMTP() { $this->Mailer = 'smtp'; }
改成:
function IsSMTP() { $this->Mailer = 'SMTP'; }
本文转自@东方天宇个人博客