首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phpmailer不工作,错误日志:未登录的PHPMailer\PHPMailer\Exception: SMTP错误:无法连接到SMTP主机

phpmailer不工作,错误日志:未登录的PHPMailer\PHPMailer\Exception: SMTP错误:无法连接到SMTP主机
EN

Stack Overflow用户
提问于 2021-04-15 06:45:21
回答 1查看 987关注 0票数 0

最近我建了一个网站,一切都很顺利,但联系方式并不是发邮件。我是使用jquery、php和PHPMailer php库的组合来完成的。请帮帮我。以下是代码:

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

代码语言:javascript
复制
<?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可以工作,所以我确信主机是可访问的。I也关闭了双因素验证打开了安全性较差的应用。

我试过: 1)将端口更改为465。2)关闭自动图集。3)检查openssl是否未注释。4)检查windows防火墙和aws安全中的入站和出站规则。

它在浏览器调试器上给出了一个post错误(500内部服务器错误)。以下是PHP日志:

代码语言:javascript
复制
[<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上的localhost上工作!谢谢你提前帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 07:29:34

首先,我尝试运行您的代码,这给我的SMTP类没有找到错误,所以我添加了另一个use语句use PHPMailer\PHPMailer\SMTP;,以避免未来的错误。

然后,我得到了同样的错误,并通过生成一个App来解决它,这是2步验证帐户所必需的。

我并没有真正修改您的代码,但是我在本地运行它。

如果没有工作,您可以设置调试模式$mail->SMTPDebug = 3;以获得更多详细信息,我还建议您检查SSL/TLS协议,我从下面的线程中看到了该协议:PHPMailer: SMTP Error: Could not connect to SMTP host

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67103504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档