【问题标题】:PHPMailer - Gmail settings - Error 10060PHPMailer - Gmail 设置 - 错误 10060
【发布时间】:2015-03-26 01:18:28
【问题描述】:

很抱歉添加到 PHPMailer / Gmail 问题的集合。我已经阅读了所有内容,但仍然无法使其正常工作。首先是错误信息:

2015-03-25 16:22:44 连接:打开
2015-03-25 16:22:54 SMTP 错误:无法连接到服务器:连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 没有回应。 (10060) SMTP 连接()失败。消息不是 发送。邮件程序错误:SMTP connect() 失败。

此代码与我多次使用以从secureserver.net 帐户成功发送电子邮件的代码相同,因此我非常有信心该脚本是可靠的。问题一定出在我尝试使用的 gmail 设置中(?)。

try {
        $mail = new PHPMailer(true);
        $mail->IsSMTP(); // Using SMTP.
        $mail->CharSet = 'utf-8';
        $mail->SMTPDebug = 2; // Enables SMTP debug information - SHOULD NOT be active on production servers!
        $mail->SMTPSecure = 'tls';
        $mail->SMTPAuth = 'true'; // Enables SMTP authentication.
        $mail->Host = "smtp.gmail.com"; // SMTP server host.
        $mail->Port = 587; // Setting the SMTP port for the GMAIL server.
        $mail->Username = "XXXXXXXXXX@gmail.com"; // SMTP account username (GMail email address).
        $mail->Password = "XXXXXXXXXX"; // SMTP account password.
        $mail->AddReplyTo('XXXXXXXXXX@gmail.com', 'me'); // Use this to avoid emails being classified as spam - SHOULD match the GMail email!
        $mail->AddAddress('someone.else@gmail.com', 'Someone Else'); // Recipient email / name.
        $mail->SetFrom('XXXXXXXXXX@gmail.com', 'me'); // Sender - SHOULD match the GMail email.
        $mail->Subject = 'PHPMailer Test Subject via smtp, basic with authentication';
        $mail->Body = 'Test Body';
        $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
        // $mail->MsgHTML($message);
        $mail->Send();
    } catch (phpmailerException $e) {
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
        echo $e->getMessage(); //Boring error messages from anything else!
    }

我也尝试过端口 465/ssl(甚至是 25,尽管这几乎肯定行不通)。我用 telnet 验证我可以到达 587 端口:

telnet smtp.gmail.com 587
正在尝试 2607:f8b0:4001:c11::6c...
已连接 到 gmail-smtp-msa.l.google.com。
转义字符是'^]'。
220 mx.google.com ESMTP f1sm1137441igt.14 - gsmtp

我错过了什么?我已经经历了几个小时,我没有发现任何问题。谢谢!

【问题讨论】:

标签: php email gmail phpmailer


【解决方案1】:

你检查过the troubleshooting guide吗?

使用SMTPDebug = 4 调试低级连接(相对于 SMTP)问题。

你确定你使用的是最新的 PHPMailer 吗?您的代码看起来像是来自旧示例。

最好从测试中消除 PHPMailer,因为我怀疑您的问题是较低级别的。编写一个简单的脚本,对端口 587 执行 fsockopen 并从中读取,如下所示:

<?php
$fp = fsockopen('tcp://smtp.gmail.com', 587, $errno, $errstr, 10);
echo fgets($fp, 128);
fclose($fp);

如果可行,您会从中看到类似220 mx.google.com ESMTP eo1sm5152802wib.16 - gsmtp 的内容。

如果这不起作用,请怀疑 php.ini 设置、禁用功能、缺少扩展等。

【讨论】:

  • 好建议。非常感谢。 fsockopen 命令抛出 500 错误,所以看起来我需要弄清楚这一点。不过,有趣的是,它如何与其他电子邮件地址一起正常工作。我已经有大约一年没有更新我的 PHPMailer 代码了,所以它可能已经过时了。再次感谢!
  • 嘿,你的问题解决了吗?我目前有同样的问题。 :)
猜你喜欢
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 2015-07-23
  • 1970-01-01
  • 2011-09-06
相关资源
最近更新 更多