douyuanliao8815
douyuanliao8815
2015-05-12 21:48
浏览 525
已采纳

Gmail帐户SMTP - >错误:无法连接到服务器:拒绝连接(111)

Im using phpmailer to send emails using google business apps. Everything was running fine but since last three days, I've started to get the following error

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

The strange thing is that, this doesn't happen all the time. For example, Out of 10 emails, I get the above error for 9 and 1 email sometimes is sent out to recipient.

Here is my code

<?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");

EDIT I've updated my phpmailer to 5.2 (latest) but still I get this same error. The worst thing is sometimes it works and sometimes it doesn't. I've checked both ports for tls and ssl, both are listening fine.

Here is what I've done so far

  1. Updated PHPMailer to latest version
  2. Tried both tls on 587 and ssl on 465
  3. Verified that both ports are listening
  4. tried to connect to smtp.gmail.com through telnet using both ports (ssl and tls)
  5. Tested all three different email addresses of google apps (a@a.com, b@b.com, c@c.com). All sites are giving same error - SMTP ERROR: Failed to connect to server: Connection refused (111)
  6. Tested my code on different VPS and it "looks" to run fine over there.

Here is the output of debug when email is sent

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

When it doesn't send

SMTP ERROR: Failed to connect to server: Connection refused (111)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • dongshanya2008
    dongshanya2008 2015-05-13 10:13
    已采纳

    There might be dns issues. Check your /etc/resolve.conf file set these,

    nameserver 8.8.8.8

    nameserver 8.8.4.4

    点赞 评论
  • dongyanhu5628
    dongyanhu5628 2015-05-13 07:13

    It may not make a difference, but you're using an old version of PHPMailer (get the latest), and you should base your code on the gmail example provided, not the old one you've used.

    I'd say this is a network problem - if you're being rejected by spam filters, google will tell you, give you 4.2.1 deferrals etc, not block you outright.

    Take a look through the troubleshooting guide and see if you get any other clues about your connectivity. It could be something like your ISP blocking outbound SMTP.

    One other observation: this is very unlikely to be a spam filtering issue as it involves sending mail from gmail, not to gmail.

    点赞 评论
  • dream02008
    dream02008 2015-05-13 07:20

    Google's smtp started to be very picky over time. I've used it to deliver notifications from web apps (definitely less than 100 per day), but ONE misspelled email address that bounces is enough to start seeing Connection refuses from their side.

    Switch to some transaction mail provider (e.g. mandrill etc) for peace of mind. They usually have some free starters plan that is still way better than smtp of Google.

    点赞 评论
  • dongtun1209
    dongtun1209 2017-02-01 19:27

    I am using GoDaddy hosting. I keep some fields blank and send mail it works. please see below code it is working for me.

    <?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!";
                }
    }
    
    ?>
    

    just changed from email address, so you can send mail to this email id.

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

相关推荐