【问题标题】:Gmail Account SMTP -> ERROR: Failed to connect to server: Connection refused (111)Gmail 帐户 SMTP -> 错误:无法连接到服务器:连接被拒绝 (111)
【发布时间】:2015-05-12 21:48:50
【问题描述】:

我正在使用 phpmailer 使用谷歌业务应用程序发送电子邮件。一切运行良好,但从最近三天开始,我开始收到以下错误

SMTP -> ERROR: Failed to connect to server: Connection refused (111)
The following From address failed: example@example.com 

奇怪的是,这种情况并非一直发生。例如,在 10 封电子邮件中,我收到 9 封的上述错误,有时会向收件人发送 1 封电子邮件。

这是我的代码

<?php

function sendmail($mail_to,$mail_sub,$mail_mesg){

//mail("casper.kotwal@gmail.com", "LRD sendmail", "inside send mail");

require_once('classes/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug  = 2;
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "ssl";
$mail->Host       = "smtp.gmail.com";
$mail->Port       = 465;
$mail->Username   = "example@example.com";
$mail->Password   = "example";
$mail->AddReplyTo('example@example.com', 'Example Documents');
$mail->AddAddress($mail_to);
$mail->SetFrom('example@example.com', 'Example Documents');
$mail->Subject = $mail_sub;
$mail->MsgHTML($mail_mesg);
$mail->Send();
}

sendmail("casper.kotwal@gmail.com", "test", "test");

编辑 我已将我的 phpmailer 更新为 5.2(最新),但仍然出现同样的错误。最糟糕的是有时它有效,有时则无效。我已经检查了 tls 和 ssl 的两个端口,它们都在监听。

这是我到目前为止所做的

  1. 将 PHPMailer 更新到最新版本
  2. 在 587 上尝试了 tls,在 465 上尝试了 ssl
  3. 验证两个端口都在监听
  4. 尝试使用两个端口(ssl 和 tls)通过 telnet 连接到 smtp.gmail.com
  5. 测试了谷歌应用的所有三个不同的电子邮件地址(a@a.com、b@b.com、c@c.com)。所有站点都给出相同的错误 - SMTP 错误:无法连接到服务器:连接被拒绝 (111)
  6. 在不同的 VPS 上测试了我的代码,它“看起来”在那里运行良好。

这是发送电子邮件时的调试输出

SERVER -> CLIENT: 220 mx.google.com ESMTP df1sm6922498wib.12 - gsmtp
CLIENT -> SERVER: EHLO www.land-registry-documents.co.uk
SERVER -> CLIENT: 250-mx.google.com at your service, [2001:41c8:51:609:fcff:ff:fe00:3b86]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
CLIENT -> SERVER: STARTTLS
SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
CLIENT -> SERVER: EHLO www.land-registry-documents.co.uk
SERVER -> CLIENT: 250-mx.google.com at your service, [2001:41c8:51:609:fcff:ff:fe00:3b86]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 334 VXNlcm5hbWU6
CLIENT -> SERVER: c3lzdGVtQGxhbmQtcmVnaXN0cnktZG9jdW1lbnRzLmNvLnVr
SERVER -> CLIENT: 334 UGFzc3dvcmQ6
CLIENT -> SERVER: bmV3Y2FzdGxlbGVlZHM=
SERVER -> CLIENT: 235 2.7.0 Accepted
CLIENT -> SERVER: MAIL FROM:<system@land-registry-documents.co.uk>
SERVER -> CLIENT: 250 2.1.0 OK df1sm6922498wib.12 - gsmtp
CLIENT -> SERVER: RCPT TO:<casper.kotwal@gmail.com>
SERVER -> CLIENT: 250 2.1.5 OK df1sm6922498wib.12 - gsmtp
CLIENT -> SERVER: DATA
SERVER -> CLIENT: 354 Go ahead df1sm6922498wib.12 - gsmtp
CLIENT -> SERVER: Date: Wed, 13 May 2015 08:56:37 +0000
CLIENT -> SERVER: To: Casper Kotwal <casper.kotwal@gmail.com>
CLIENT -> SERVER: From: Land Registry Documents <system@land-registry-documents.co.uk>
CLIENT -> SERVER: Reply-To: Land Registry Documents <system@land-registry-documents.co.uk>
CLIENT -> SERVER: Subject: PHPMailer GMail SMTP test
CLIENT -> SERVER: Message-ID: <59cec7626d25f2022430e0660778e492@www.land-registry-documents.co.uk>
CLIENT -> SERVER: X-Priority: 3
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.10 (https://github.com/PHPMailer/PHPMailer/)
CLIENT -> SERVER: MIME-Version: 1.0
CLIENT -> SERVER: Content-Type: multipart/alternative;
CLIENT -> SERVER: boundary="b1_59cec7626d25f2022430e0660778e492"
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: This is a multi-part message in MIME format.
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_59cec7626d25f2022430e0660778e492
CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii
CLIENT -> SERVER:
CLIENT -> SERVER: This is a plain-text message body
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_59cec7626d25f2022430e0660778e492
CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii
CLIENT -> SERVER:
CLIENT -> SERVER: test
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_59cec7626d25f2022430e0660778e492--
CLIENT -> SERVER:
CLIENT -> SERVER: .
SERVER -> CLIENT: 250 2.0.0 OK 1431507399 df1sm6922498wib.12 - gsmtp
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 closing connection df1sm6922498wib.12 - gsmtp

当它不发送时

SMTP ERROR: Failed to connect to server: Connection refused (111)

【问题讨论】:

  • 我猜是谷歌反垃圾邮件规则造成的错误。
  • 只需使用 mandrillapp 发送电子邮件,让自己免于头痛

标签: php email phpmailer google-apps


【解决方案1】:

可能存在 dns 问题。检查你的 /etc/resolve.conf 文件设置这些,

域名服务器 8.8.8.8

域名服务器 8.8.4.4

【讨论】:

  • 你是救生员吗:)
【解决方案2】:

我正在使用 GoDaddy 托管。我将一些字段留空并发送邮件它可以工作。 请看下面的代码它对我有用。

<?php
include("class.phpmailer.php");
function sendMail($address,$username,$body){
            $mail = new PHPMailer();
            $mail->IsSMTP(); // telling the class to use SMTP
            //$mail->Host       = "smtp.gmail.com"; // SMTP server
            $mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing)
                                // 1 = errors and messages
                                                                           // 2 = messages only
            // $mail->SMTPAuth   = true;                  // enable SMTP authentication
            // $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
            // $mail->Host       = "smtp.gmail.com";      // sets  as the SMTP server
            // $mail->Port       = 465;                   // set the SMTP port for the server
            // $mail->Username   = "xyz@gmail.com";  // username
            // $mail->Password   = "test121232";            // password

            $mail->SetFrom('contact@example.co.in', 'Contact');

            $mail->Subject    = "Enquiry for tour and travels package";



            $mail->MsgHTML($body);

            $address = $address;
            $mail->AddAddress($address, $username);
            $mail->AddCC('contact@example.co.in');

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

?>

刚刚从电子邮件地址更改,因此您可以将邮件发送到此电子邮件 ID。

$mail->SetFrom('youremail@example.co.in', 'Contact');

【讨论】:

    【解决方案3】:

    随着时间的推移,Google 的 smtp 开始变得非常挑剔。我用它来发送来自网络应用程序的通知(每天肯定少于 100 个),但一个拼写错误的电子邮件地址被退回就足以开始看到 Connection 被他们拒绝了。

    为了安心,请切换到某些交易邮件提供商(例如mandrill 等)。他们通常有一些免费的入门计划,仍然比谷歌的 smtp 好得多。

    【讨论】:

      【解决方案4】:

      这可能没什么区别,但您使用的是旧版本的 PHPMailer (get the latest),您的代码应该基于 the gmail example provided,而不是您使用的旧版本。

      我会说这是一个网络问题 - 如果你被垃圾邮件过滤器拒绝,谷歌会告诉你,给你 4.2.1 延期等,而不是直接阻止你。

      查看the troubleshooting guide,看看是否有任何其他有关连接的线索。可能是您的 ISP 阻止了出站 SMTP。

      另一个观察结果:这不太可能是垃圾邮件过滤问题,因为它涉及发送邮件 gmail,而不是 gmail。

      【讨论】:

      • 我正在使用 phpmailer 5.2 并检查了示例。只是它有时会发送电子邮件,有时不会。我知道这没有任何意义,但它从过去 3 天开始就发生了 :(
      • 5.2 的哪个版本?最新的是 5.2.10。 FWIW 我有时每天向 gmail 发送数十万条消息,我从未见过它拒绝这样的连接。
      • 我实际上使用的是 5.1,经过数小时的挖掘,我 80% 确定它与我的服务器端口有关。由于 phpmailer 也无法与其他 gmail 帐户一起使用 smtp
      • 并非如此 - 只是看起来您遇到了间歇性网络问题。在缓解中,你可以循环几次,看看它是否在你的脚本的一次运行中发生变化。
      猜你喜欢
      • 1970-01-01
      • 2018-09-29
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2015-08-26
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多