phpemailer 提示Mailer Error: SMTP connect() failed...

今天遇到一个很诡异的现象,之前好好的phpmailer今天突然出bug了,提示Mailer Error: SMTP connect() failed,比较诡异的是,我在本地,不管是前端请求,还是命令行直接执行,都是正常的,然而在服务器上面,命令行执行可以正常发送,然而在前端请求的时候就出了问题,一直提示如上错误
phpmailer配置:

try {
        $mail = new PHPMailer();
        $mail->IsSMTP();
        $mail->Host = 'smtp.163.com';
        $mail->Port = 25;
        $mail->SMTPAuth = true;
        $mail->Username = 'xxx';//这里的信息隐去了,不是账户密码问题
        $mail->Password = "xxx";
        $mail->From = 'xxx';
        $mail->FromName = 'xxx';
        $mail->AddAddress($address);
        $mail->CharSet = "utf-8";
        $mail->Encoding = "base64";
        $mail->IsHTML(true);
        $mail->Subject = $title;
        $mail->Body = $body;
        return $mail->Send();
    } catch (phpmailerException $e) {
//        echo "邮件发送失败:" . $e->errorMessage();
        return false;
    }

前端控制器是用的最简单的代码测试的,引入helper 执行函数(CI框架)

$this->load->helper('email');
$res = Send('xxx' , 'aa' , 'bb');//xxx是需要发送的邮箱
var_dump($res);
阅读 9.7k
5 个回答

服务器php.ini 开启extension=php_openssl.dll

以下是具体的报错信息

2017-01-14 03:26:24    Connection: opening to smtp.163.com:25, timeout=300, options=array ( ) 2017-01-14 03:26:24    Connection: opened 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "" 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "220 163.com Anti-spam GT for Coremail System (163com[20141201]) " 2017-01-14 03:26:25    SERVER -> CLIENT: 220 163.com Anti-spam GT for Coremail System (163com[20141201]) 2017-01-14 03:26:25    CLIENT -> SERVER: EHLO www.iciyuan.com 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "" 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-mail " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-PIPELINING " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail 250-PIPELINING " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-AUTH LOGIN PLAIN " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-AUTH=LOGIN PLAIN " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFvMPogUCa0xDrUUUUj " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFvMPogUCa0xDrUUUUj " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250-STARTTLS " 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFvMPogUCa0xDrUUUUj 250-STARTTLS " 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "250 8BITMIME " 2017-01-14 03:26:25    SERVER -> CLIENT: 250-mail 250-PIPELINING 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFvMPogUCa0xDrUUUUj 250-STARTTLS 250 8BITMIME 2017-01-14 03:26:25    CLIENT -> SERVER: STARTTLS 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "" 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "220 Ready to start TLS " 2017-01-14 03:26:25    SERVER -> CLIENT: 220 Ready to start TLS 2017-01-14 03:26:25    SMTP Error: Could not connect to SMTP host. 2017-01-14 03:26:25    CLIENT -> SERVER: QUIT 2017-01-14 03:26:25    SMTP -> get_lines(): $data is "" 2017-01-14 03:26:25    SMTP -> get_lines(): $str is "" 2017-01-14 03:26:25    SERVER -> CLIENT:  2017-01-14 03:26:25    SMTP ERROR: QUIT command failed:  2017-01-14 03:26:25    Connection: closed 2017-01-14 03:26:25    SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

PHPMailer 最近暴了一个漏洞

新手上路,请多包涵

我也遇到同样的问题,本地运行没有问题,服务器报错信息几乎一致。

服务器上的Php.ini配置调整过,不过不行。

据说是服务器上的OpenSSL有问题,但这是25端口没有465的SSL连接。

不过,在我的报错里还有stream_socket_enable_crypto()出现问题。

SSL operation failed with code 1. OpenSSL Error messages: error:14090086

(不知道为什么。)

如果你已经解决,求方法分享。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题