phpmailer发送邮件 SMTP Error: Could not authenticate 错误

今天在使用phpmailer发送邮件时居然提示SMTP Error: Could not authenticate,这个感觉是smtp设置的问题,下面我在网上找到了几种解决办法。

今天在使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误,其中密码帐号都是正确的,邮箱也设置开启了SMTP功能。

上谷歌百度了一遍,有的说是服务器禁用了端口,有的说把class.phpmailer.php中的,代码如下:

  1. function IsSMTP() {  
  2.  $this->Mailer = 'smtp';  
  3.  }//改为  
  4.  
  5. function IsSMTP() {  
  6.  $this->Mailer = 'SMTP';  
  7.  } 

测试以后还是不行,心中郁闷的一米,最后在一篇博客中找到了解决方法,先分享出来让更多遇到同样问题的人能得到帮助!

这个错误说明虚拟主机不支持PHPMailer默认调用的fsockopen函数,找到class.smtp.php文件,搜索fsockopen,就找到了这样一段代码:

  1. // connect to the smtp server  
  2.  $this->smtp_conn = @fsockopen($host,// the host of the server  
  3.      $port,// the port to use  
  4.      $errno,   // error number if any  
  5.      $errstr,  // error message if any  
  6.      $tval);   // give up after ? secs 

方法1:将fsockopen函数替换成pfsockopen函数,首先,在php.ini中去掉下面的两个分号

 ;extension=php_sockets.dll

;extension=php_openssl.dll

然后重启一下,因为pfsockopen的参数与fsockopen基本一致,所以只需要将@fsockopen替换成@pfsockopen就可以了。

方法2:使用stream_socket_client函数

一般fsockopen()被禁,pfsockopen也有可能被禁,所以这里介绍另一个函数stream_socket_client(),stream_socket_client的参数与fsockopen有所不同,所以代码要修改为如下:

$this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno,  $errstr,  $tval);

这样就可以了,如果上面办法还是没有解决可能是邮箱自动过滤你机器自动登录邮箱发邮件了哦,我是使用下面办法解决的,刚开始使用的qq的帐号,提示上面错误。换成新注册的163帐号可以正常发送。之后换了一个qq等级比较高的帐号,这下可以正常发送,没有报任何错误。因为收件人用的是qq邮箱帐号,所以发件帐号用qq的邮箱比较好,这样发送过多不会轻易的被拦截或判为垃圾邮件。所以结论就是配置中使用一个qq等级比较高的帐号(我的一个小号等级2个月亮可以正常使用,当然等级越高越好,)

结论:也要查看邮箱中“设置邮件地址黑名单”及“收信规则”,有时系统会自动将一些邮箱自动加入黑名单的

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » phpmailer发送邮件 SMTP Error: Could not authenticate 错误

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡