zoukankan      html  css  js  c++  java
  • phpmailer发送邮件 SMTP Error: Could not authenticate 错误

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

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

    代码如下 复制代码

    function IsSMTP() {
    $this->Mailer = 'smtp';
    }改为
    
    function IsSMTP() {
    $this->Mailer = 'SMTP';
    }

    (我的问题通过以上修改解决)
    如果解决不了还有一些解决方法可供参考:
    这个错误说明虚拟主机不支持PHPMailer默认调用的fsockopen函数,找到class.smtp.php文件,搜索fsockopen,就找到了这样一段代码:

    代码如下 复制代码

    // connect to the smtp server
    $this->smtp_conn = @fsockopen($host,// the host of the server
        $port,// the port to use
        $errno,   // error number if any
        $errstr,  // error message if any
        $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);
    

    这样就可以了。

     
  • 相关阅读:
    response.redirect三种新页面转向方法
    respones.redirect 打开新的页面的两个方法
    临时表
    ODBC方式操作oracle数据库
    OLEDB方式操作oracle数据库
    oracle所有的乱码解决方案
    引用HM.Util.Ioc 的时候报错
    js webstrom中svn的配置及使用
    js vs2013中允许js访问json文件的解决方案
    Oracle 字符集常见字符集及解决方案
  • 原文地址:https://www.cnblogs.com/jamescr7/p/7831094.html
Copyright © 2011-2022 走看看