如何解决:无法与主机 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 东西,所以我没有完全浪费我的努力。感谢大家的宝贵时间和帮助。
我正在尝试为我正在使用的登录系统设置电子邮件验证系统。我的 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 东西,所以我没有完全浪费我的努力。感谢大家的宝贵时间和帮助。