简体   繁体   中英

How to resolve: Connection could not be established with host smtp.gmail.com [Connection timed out #110] error in PHP

I'm trying to set up an email verification system for a login system that I am working on. I've got mostly everything working in my php code, up until the $mailer->send($message) line which returns the above error.

I've looked at several other similar issues on stackoverflow and other sites, but none of the proposed solutions have worked. I have less secure apps enabled on the gmail account that is sending the verification email. I've tried ssl and tls with ports 465 and 587 respectively. I don't wish to disable anything security related unnecessarily. While I am fairly confident in my coding knowledge, I'm afraid I have very little experience with server related issues like this. I've created a login system with email verification successfully in the past, but I don't remember how I avoided this issue. If this is related to firewalls or something like that, I only ask for a little more information as one can assume I'm essentially a layman in that area.

<?php
require_once './vendor/autoload.php';

function sendVerificationEmail($userEmail, $verificationCode)
{
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
->setUsername("fromEmail@email.com")
->setPassword("password");

$mailer = new Swift_Mailer($transport);
$body = "";
    $message = (new Swift_Message('Verify your email'))
        ->setFrom("fromEmail@email.com")
        ->setTo($userEmail)
        ->setBody($body);

    echo "Message Created. Send To: " . $userEmail;
    try
    {
      if ($mailer->send($message, $errors))
      {
        echo "email success.";
        return true;
      }
      else
      {
        echo "email no good.";
        echo "ERROR: " . $errors;
        return false;
      }
    }
    catch(Swift_SwiftException $e)
    {
      echo "ERROR: " . $e->getMessage();
    }
}

?>

Much of this code is derived from the standard tutorials. I'm just trying to make sure an email is sent before I actually include the functionality for verification. I do not know why this is not sending an email. It's specifically returning the 'Connection could not be established with host smtp.gmail.com [Connection timed out #110]' error.

Thank you for your time.

this is always a connection issue from your app to Google servers. Whenever Google rejects the connection, Google will actually return an error, including a KB article. You can easily test the same connection using SMTP tester tools, or even any Outlook, phone IMAP/SMTP connection. I'm afraid that I can't help you with the code, but I can surely tell you that the issue is not your Google account (I've seen this many times).

You can also try Google's unrestrictive server (ASPMX.L.GOOGLE.COM) port 25, no auth, and it allows to test the connection without username/pw, but it only sends emails to google servers.

Good luck

I eventually worked around the issue by using an SMTP plugin for Wordpress (WP Mail SMTP), where the page and login system are hosted. It used some of the 0Auth2 stuff I set up, so I didn't completely waste my efforts. Thank you all for your time and help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM