PHPMailer给出“SMTP连接失败”错误消息

时间:2014-06-11 15:50:25

标签: php phpmailer

我有以下代码:

require 'bin\PHPMailerAutoload.php';

$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

$mail->From = "[an e-mail address]@gmail.com";
$mail->AddAddress("[an e-mail address]@gmail.com");

$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));

$mail->AltBody = 'sprava';

if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent";
}

以下是回复:

    2014-06-11 15:46:34 SERVER 
-> CLIENT: 220 mx.google.com ESMTP v47sm60079970eel.22 - gsmtp 2014-06-11 15:46:34 CLIENT 
-> SERVER: EHLO localhost 2014-06-11 15:46:34 SERVER 
-> CLIENT: 250-mx.google.com at your service, [95.103.53.55] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250 CHUNKING 2014-06-11 15:46:34 CLIENT 
-> SERVER: STARTTLS 2014-06-11 15:46:34 SERVER 
-> CLIENT: 220
    2.0.0 Ready to start TLS Warning: stream_socket_enable_crypto(): this stream does not support SSL/crypto in C:\dev\localhost_www\bin\class.smtp.php on line 262 2014-06-11 15:46:34 CLIENT 
-> SERVER: QUIT 2014-06-11 15:46:44 SERVER 
-> CLIENT: 2014-06-11 15:46:44 SMTP ERROR: QUIT command failed: SMTP connect() failed. Mailer Error: SMTP connect() failed.

我该如何解决?我用php.ini文件尝试了这个但是没有成功。

1 个答案:

答案 0 :(得分:4)

解决这部分错误的关键:

  

- >客户:220       2.0.0准备启动TLS警告:stream_socket_enable_crypto():此流不支持SSL /加密   C:\ dev \ localhost_www \ bin \ class.smtp.php,电话:2014年2月26日   15:46:34客户

这意味着您的本地PHP设置没有启用php_openssl.dll。您可以通过进入php.ini&找到一个如下所示的行:

; extension=php_openssl.dll

取消注释:

extension=php_openssl.dll

保存,重启Apache&一切都应该好。

如果您想确保编辑正确的php.ini文件,请在您的网络根目录中创建名为phpinfo.php的文件。然后将以下命令放在那里:

phpinfo();

然后通过这样的网络浏览器加载phpinfo.php;更改http://localhost/以匹配您的服务器网址:

http://localhost/phpinfo.php

当该页面加载时,它将显示所有服务器的PHP设置。查找标有Loaded Configuration File的行并更改其中加载的php.ini