我正在尝试为我正在使用的登录系统设置电子邮件验证系统。我的PHP代码中几乎所有东西都可以正常工作,直到$ mailer-> send($ message)行返回上述错误。
我已经在stackoverflow和其他站点上查看了其他几个类似的问题,但是所提出的解决方案均无效。我在发送验证电子邮件的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();
}
}
?>
许多代码是从标准教程派生的。我只是想确保在实际包含验证功能之前先发送一封电子邮件。我不知道为什么这不发送电子邮件。专门返回“无法使用主机smtp.gmail.com [连接超时#110]建立连接”错误。
谢谢您的时间。
答案 0 :(得分:0)
这始终是您的应用程序与Google服务器之间的连接问题。每当Google拒绝连接时,Google都会实际返回错误,包括知识库文章。您可以使用SMTP测试器工具甚至任何Outlook,电话IMAP / SMTP连接轻松测试同一连接。恐怕我无法为您提供代码,但是我可以肯定地告诉您问题不是您的Google帐户(我已经看过很多次了)。
您还可以尝试使用Google的非限制性服务器(ASPMX.L.GOOGLE.COM)端口25,无需进行身份验证,它可以在不使用用户名/密码的情况下测试连接,但只能将电子邮件发送到google服务器。
祝你好运
答案 1 :(得分:0)
我最终通过使用用于Wordpress的SMTP插件(WP Mail SMTP)解决了该问题,该插件托管了页面和登录系统。它使用了我设置的一些0Auth2内容,所以我没有完全浪费我的精力。谢谢大家的时间和帮助。