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

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

我正在尝试为我正在使用的登录系统设置电子邮件验证系统。我的 php 代码中几乎所有内容都可以正常工作,直到 $mailer->send($message) 行 returns 上述错误。

我已经在 Whosebug 和其他网站上查看了其他几个类似的问题,但是 none 提出的解决方案有效。我在发送验证电子邮件的 gmail 帐户上启用了不太安全的应用程序。我已经分别尝试使用端口 465 和 587 的 ssl 和 tls。我不想禁用任何不必要的安全相关内容。虽然我对自己的编码知识相当有信心,但恐怕我对此类服务器相关问题的经验很少。我过去曾成功创建过一个带有电子邮件验证的登录系统,但我不记得我是如何避免这个问题的。如果这与防火墙或类似的东西有关,我只要求提供更多信息,因为人们可以假设我基本上是该领域的外行。

<?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();
    }
}

?>

大部分代码源自标准教程。我只是想确保在我实际包含验证功能之前发送电子邮件。我不知道为什么这不发送电子邮件。它专门返回 'Connection could not be established with host smtp.gmail.com [Connection timed out #110]' 错误。

感谢您的宝贵时间。

这始终是您的应用到 Google 服务器的连接问题。每当 Google 拒绝连接时,Google 实际上会 return 一个错误,包括知识库文章。您可以使用 SMTP 测试工具轻松测试相同的连接,甚至可以使用任何 Outlook phone IMAP/SMTP 连接。恐怕我无法在代码方面为您提供帮助,但我可以肯定地告诉您,问题不在于您的 Google 帐户(这种情况我已经见过很多次了)。

你也可以尝试Google的无限制服务器(ASPMX.L.GOOGLE.COM)端口25,没有授权,它允许在没有username/pw的情况下测试连接,但它只发送电子邮件到 google 个服务器。

祝你好运

我最终通过使用 Wordpress 的 SMTP 插件 (WP Mail SMTP) 解决了这个问题,该插件托管了页面和登录系统。它使用了我设置的一些 0Auth2 东西,所以我没有完全浪费我的努力。感谢大家的宝贵时间和帮助。