douchan4674
2019-07-09 17:27 阅读 398
已采纳

如何解决:无法使用PHP中的主机smtp.gmail.com [连接超时#110]错误建立连接

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.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    douyan1903 douyan1903 2019-08-02 16:06

    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.

    点赞 评论 复制链接分享
  • dtc4547 dtc4547 2019-07-12 04:56

    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

    点赞 评论 复制链接分享

相关推荐