phpmailer和gmail SMTP错误:无法连接到服务器:网络无法访问(101)SMTP连接()失败

时间:2013-12-11 15:35:20

标签: smtp gmail phpmailer

我需要帮助 这是我的代码:

require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;

$mail->SMTPSecure = "tls";
$mail->Port = 587;

$mail->Username = 'some@gmail.com';
$mail->Password = 'somepass';
$mail->addAddress('another@gmail.com', 'Josh Adams');
$mail->Subject = 'PHPMailer GMail SMTP test';
$body = 'This is the HTML message body in bold!';
$mail->MsgHTML($body);
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

我收到此错误: 2013-12-11 15:15:02 SMTP错误:无法连接到服务器:网络无法访问(101)SMTP连接()失败。邮件程序错误:SMTP连接()失败。

有什么帮助吗?

4 个答案:

答案 0 :(得分:6)

您可能希望首先隔离此问题以确定它是否真的是网络问题;或者它是否特定于PHP邮件程序或您的代码。在您的服务器上,从命令提示符处尝试使用telnet连接到端口587上的smtp.gmail.com,如下所示:

telnet smtp.gmail.com 587

你应该看到来自smtp.gmail.com的回复,如下:

Trying 173.194.74.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP f19sm71757226qaq.12 - gsmtp

你看到这个,或连接尝试是否挂起并最终超时?如果连接失败,则可能意味着您的托管公司阻止了端口587上的传出SMTP连接。

答案 1 :(得分:0)

以下代码:

$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Host = 'ssl://smtp.gmail.com:465';

答案 2 :(得分:0)

这对我有用:

更改:

  $mail->SMTPSecure = 'ssl';
  $mail->Host = 'smtp.gmail.com';
  $mail->Port = '465';

  $mail->SMTPSecure = 'tls';
  $mail->Host = 'smtp.gmail.com';
  $mail->Port = '587';

答案 3 :(得分:-3)

变化

$mail->SMTPSecure = "tls";

$mail->SMTPSecure = 'ssl';

相关问题