PHPMailer 使用 SMTP 身份验证发送电子邮件,但 Gmail 仍然声称无法验证发件人
PHPMailer sends email with SMTP authentication but Gmail still claims it cannot validate sender
我正在使用 PHPMailer 从我的 PHP 脚本发送经过 SMTP 身份验证的电子邮件。 PHPMailer 脚本有效,它没有抛出任何错误并且我收到了我的测试电子邮件,但是它们在我的 gmail 收件箱中仍然被标记为未通过身份验证。 (显示有小问号图标)。
这是我的代码:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
$mail = new PHPMailer(TRUE);
try {
$mail->setFrom('noreply@mydomain.com', 'My Domain');
$mail->addAddress('me@gmail.com', 'Me');
$mail->Subject = 'PHPMailer Test Message';
$mail->isHTML(TRUE);
$mail->Body = 'Test email';
/*SMTP settings*/
$mail->isSMTP();
$mail->Host = 'smtp.ionos.co.uk';
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = 'tls';
$mail->Username = 'noreply@mydomain.com';
$mail->Password = 'myPassword';
$mail->Port = 587;
if(!$mail->send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
catch (Exception $e)
{
echo $e->errorMessage();
}
catch (\Exception $e)
{
echo $e->getMessage();
}
?>
有谁知道为什么这封电子邮件仍然被标记?
我使用的是 PHPMailer 6.1,服务器是 运行 PHP 7.4
您必须允许 gmail 使用 DNS 设置中的 spf 条目验证您的电子邮件。有关详细信息,请参阅 Google 文档:https://support.google.com/a/answer/33786
因此,为了回应评论,我通过向我域的 DNS 添加 SPF (TXT) 记录 解决了这个问题。主机字段设置为 @,权重设置为 Hardfail
感谢大家的帮助
我正在使用 PHPMailer 从我的 PHP 脚本发送经过 SMTP 身份验证的电子邮件。 PHPMailer 脚本有效,它没有抛出任何错误并且我收到了我的测试电子邮件,但是它们在我的 gmail 收件箱中仍然被标记为未通过身份验证。 (显示有小问号图标)。
这是我的代码:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
$mail = new PHPMailer(TRUE);
try {
$mail->setFrom('noreply@mydomain.com', 'My Domain');
$mail->addAddress('me@gmail.com', 'Me');
$mail->Subject = 'PHPMailer Test Message';
$mail->isHTML(TRUE);
$mail->Body = 'Test email';
/*SMTP settings*/
$mail->isSMTP();
$mail->Host = 'smtp.ionos.co.uk';
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = 'tls';
$mail->Username = 'noreply@mydomain.com';
$mail->Password = 'myPassword';
$mail->Port = 587;
if(!$mail->send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
catch (Exception $e)
{
echo $e->errorMessage();
}
catch (\Exception $e)
{
echo $e->getMessage();
}
?>
有谁知道为什么这封电子邮件仍然被标记? 我使用的是 PHPMailer 6.1,服务器是 运行 PHP 7.4
您必须允许 gmail 使用 DNS 设置中的 spf 条目验证您的电子邮件。有关详细信息,请参阅 Google 文档:https://support.google.com/a/answer/33786
因此,为了回应评论,我通过向我域的 DNS 添加 SPF (TXT) 记录 解决了这个问题。主机字段设置为 @,权重设置为 Hardfail
感谢大家的帮助