【问题标题】:PHPMailer sends email with SMTP authentication but Gmail still claims it cannot validate senderPHPMailer 使用 SMTP 身份验证发送电子邮件,但 Gmail 仍然声称它无法验证发件人
【发布时间】:2023-03-27 01:53:01
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您的域上是否正确设置了 SPF 和 DKIM? (即 smtp.ionos.co.uk 是否实际上被授权代表 noreply@mydomain.com 发送邮件?)请记住,SMTP 允许 任何人 像其他任何人 发送电子邮件,这就是 SPF+DKIM 的原因在今天非常重要:不仅对于垃圾邮件,而且对于防止网络钓鱼也是如此。
  • 嗯,我希望因为电子邮件和域由同一提供商托管,我将被授权发送电子邮件,但我会检查 SPF+DKIM。谢谢!
  • 您有权发送电子邮件,问题就在于此;每个人都被授权以任何人的身份发送电子邮件,接收服务器尝试使用 SPF 和 DKIM 设置验证发件人的身份。如果没有设置,任何人都可以使用您的电子邮件地址作为“FROM”标题。

标签: php email phpmailer


【解决方案1】:

您必须允许 gmail 在您的 DNS 设置中使用 spf 条目来验证您的电子邮件。更多信息请参考谷歌文档:https://support.google.com/a/answer/33786

【讨论】:

    【解决方案2】:

    因此响应 cmets,我通过向我的域的 DNS 添加 SPF (TXT) 记录 解决了这个问题。主机字段设置为 @,权重设置为 Hardfail

    感谢大家的帮助。

    【讨论】:

    • 奇怪的是,通过该设置,我现在可以发送被识别为经过身份验证的电子邮件,即使将“发件人:”标题编辑到我在其他提供商处拥有的电子邮件地址之一。这似乎使身份验证变得毫无意义?
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2013-11-24
    • 2011-06-18
    • 2017-05-26
    • 2017-09-07
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多