phpmailer not working, error log: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host

phpmailer not working, error log: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host

最近我建立了一个网站,一切正常,但联系表无法发送电子邮件。我正在使用 jquery、php 和 PHPMailer php 库的组合。请帮帮我。这是代码:

php 在文件夹 PHP 中名为 contact.php 的单独文件中:

<?php 
    require 'src/Exception.php';
    require 'src/PHPMailer.php';
    require 'src/SMTP.php';
    
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    use PHPMailer\PHPMailer\SMTP;

    $mail = new PHPMailer(true);
    $mail->IsSMTP();
    $mail->Mailer = "smtp";

    $mail->SMTPDebug = 3;
    $mail->isSMTP();
    $mail->Host       = 'smtp.gmail.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = '<myemail>';                     
    $mail->Password   = '<secretpassword>';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;


    $to = "<myemail>";
    $from = $_POST['email'];
    $first_name = $_POST['name'];

    $subject = "Contact form";
    $message = "Message: " . $_POST['textans'];
    $mail->SetFrom($from, $first_name);
    $mail->addAddress('<myemail>', 'Diode');
    $mail->Subject = $subject;
    $mail->Body=$message;
    $mail->send();
    
?>

根据我所做的挖掘,数据正在传递到 PHP 但没有被发送。我在 AWS EC2 上使用该网站。我检查了 telnet 的连接,但 telnet 工作正常,所以我确定主机可以访问。 我还关闭了双因素验证并且打开了不太安全的应用程序。

我试过:1) 将端口更改为 465。2) 关闭 autotls。 3) 检查 openssl 是否未注释。 4) 检查 windows 防火墙和 aws 安全

中的入站和出站规则

在浏览器调试器上出现 post 错误(500 内部服务器错误)。这是 PHP 日志:

[<dateandtime> Asia/Kolkata] PHP Fatal error:  Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host. in <somelocation>\PHP\src\PHPMailer.php:2129
Stack trace:
#0 <somelocation>\PHP\src\PHPMailer.php(1953): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array)
#1 <somelocation>\PHP\src\PHPMailer.php(1635): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Th...', ' Name: N...')
#2 <somelocation>\PHP\src\PHPMailer.php(1468): PHPMailer\PHPMailer\PHPMailer->postSend()
#3 <somelocation>\PHP\contact.php(37): PHPMailer\PHPMailer\PHPMailer->send()
#4 {main}
  thrown in <somelocation>\PHP\src\PHPMailer.php on line 2129

它也适用于 XAMPP 上的本地主机! 提前感谢您的帮助。

首先,我尝试了 运行 你的代码,它给了我 SMTP Class not found 错误,所以我添加了另一个使用语句 use PHPMailer\PHPMailer\SMTP; 以避免将来的错误。

然后,我遇到了同样的错误并通过生成一个应用程序密码解决了这个问题,这是两步验证帐户所必需的。

我并没有真正更改您的代码,但我 运行 它在本地主机中。

如果没有任何效果,您可以设置调试模式 $mail->SMTPDebug = 3; 以获得更多详细信息,我还建议您查看 SSL/TLS 协议,我是从这个帖子中看到的:PHPMailer: SMTP Error: Could not connect to SMTP host

希望我没有浪费你的时间...