为啥 PHPMailer 无法连接到我的 SMTP 服务器
Posted
技术标签:
【中文标题】为啥 PHPMailer 无法连接到我的 SMTP 服务器【英文标题】:Why does PHPMailer fail to connect to my SMTP server为什么 PHPMailer 无法连接到我的 SMTP 服务器 【发布时间】:2021-09-18 09:55:02 【问题描述】:PHPMailer 版本:6.5.0
当我尝试将我的 phpMailer 脚本与我的 SMTP 服务器连接时,我收到了这个错误:
SSL loaded 2021-07-07 20:57:08 Connection: opening to mail.solninjaa.com:587, timeout=300, options=array ( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ),)
2021-07-07 20:57:08 Connection failed. Error #2: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: No such host is known. [C:\xampp\htdocs\php\vendor\phpmailer\phpmailer\src\SMTP.php line 388]
2021-07-07 20:57:08 Connection failed. Error #2: stream_socket_client(): unable to connect to mail.solninjaa.com:587 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) [C:\xampp\htdocs\php\vendor\phpmailer\phpmailer\src\SMTP.php line 388]
2021-07-07 20:57:08 SMTP ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: No such host is known. (0)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
第一个“加载 SSL”是我的脚本检查它是否启用了 OpenSSL。
我的邮件服务器是:
mail.solninjaa.com
注意:“mail.solninjaa.com”也是 IMAP 和 POP3 地址。
我运行了一个命令来测试邮件服务器是否真的是邮件服务器。 它回来说不是,这很奇怪,因为我可以看到它在我的 Webmin / Virtualmin 仪表板中运行(它们就像 CPanel)。这可能是问题所在,但我对此表示怀疑。我想我可能会输入错误的端口(或类似的东西)。
我只是觉得这值得一提。
我的 PHPMailer 脚本是:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/* Composer autoload.php file includes all installed libraries. */
require '.\vendor\autoload.php';
$mail = new PHPMailer(TRUE);
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$secretKey = "pleasedontsharethis";
$responseKey = $_POST['g-recaptcha-response'];
$userIP = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey&remoteip=$userIP";
$response = file_get_contents($url);
$response = json_decode($response);
echo (extension_loaded('openssl')?'SSL loaded':'SSL not loaded')."\n";
if ($response->success)
try
$mail->setFrom('otheremail@gmail.com', 'SolninjaA');
$mail->addAddress('email@gmail.com', 'Name');
$mail->Subject = 'Testing PHPMailer 2';
$mail->msghtml(file_get_contents('email_template.html'), __DIR__);
$mail->AltBody = 'There was a malfunction with sending the HTML. Sorry.';
// $mail->isSMTP();
// $mail->Port = 587;
// $mail->SMTPAuth = TRUE;
// TESTING CUSTOM STMP SERVERS
$mail->isSMTP();
$mail->Host = 'mail.solninjaa.com';
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Username = 'noreply@solninjaa.com';
$mail->Password = 'mypassword';
$mail->Port = 587;
$mail->SMTPAutoTLS = false;
$mail->SMTPDebug = 3;
/* Disable some SSL checks. */
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
/* Finally send the mail. */
$mail->send();
catch (Exception $e)
echo $e->errorMessage();
catch (\Exception $e)
echo $e->getMessage();
echo "Thank You!" . " -" . "<a href='/dist' style='text-decoration:none;color:#ff0099;'> Return Home</a> we are Automatically redirecting you in 5 seconds.";
header("Refresh:5; url=/dist");
else
echo "<span style='text-decoration:none;color: red;'>Sorry, something went wrong... Invalid Captcha, please try again.</span> <a href='/dist' style='text-decoration:none;color:#ff0099;'> Return Home</a> we are Automatically redirecting you in 5 seconds.";
header("Refresh:5; url=/dist");
?>
注意:我的原始脚本已将 XOAUTH2 设置注释掉(// 、#),但出于安全原因,我删除了这些设置。
注意:我的脚本还需要 Google reCaptcha,这就是为什么会有额外的变量。
另外,如果我的自定义 SMTP 服务器无法正常工作,我可以创建一个 Google Workspace 帐户并使用该帐户获取 XOAUTH2 令牌吗?它会显示我的自定义电子邮件地址吗? (noreply@solninjaa.com)
【问题讨论】:
【参考方案1】:它不能解析mail.solninjaa.com,我也不能。
你至少有一个 DNS 问题。
【讨论】:
感谢@Bib 的回答!我将不得不解决我的 DNS 问题。您是否介意确认如果我创建了一个 Google Workspace 帐户并使用该帐户创建了 XOAUTH2 令牌,我是否能够从该自定义地址发送电子邮件? (noreply@solninjaa.com) @Bib 不在乎-v,只是试着帮助别人以上是关于为啥 PHPMailer 无法连接到我的 SMTP 服务器的主要内容,如果未能解决你的问题,请参考以下文章
PHPMailer:SMTP错误:10051无法连接到服务器:尝试对无法访问的网络执行套接字操作
SMTP 错误:无法连接到服务器:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机 | PHP 邮件程序 6.5