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
希望我没有浪费你的时间...
最近我建立了一个网站,一切正常,但联系表无法发送电子邮件。我正在使用 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
希望我没有浪费你的时间...