Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPMailer使用SMTP身份验证发送电子邮件,但Gmail仍声称无法验证发件人_Php_Email_Phpmailer - Fatal编程技术网

PHPMailer使用SMTP身份验证发送电子邮件,但Gmail仍声称无法验证发件人

PHPMailer使用SMTP身份验证发送电子邮件,但Gmail仍声称无法验证发件人,php,email,phpmailer,Php,Email,Phpmailer,我正在使用PHPMailer从我的PHP脚本发送经过SMTP验证的电子邮件。PHPMailer脚本工作正常,不会抛出任何错误,我也会收到测试电子邮件,但它们在我的gmail收件箱中仍被标记为未经身份验证。(以小问号图标显示) 这是我的代码: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require './PHPMailer/src/Exception.php'; require

我正在使用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();
}
?>

有人知道为什么这封邮件仍然被标记吗?
我使用的是phpmailer6.1,服务器运行的是php7.4

您必须允许gmail在DNS设置中使用spf条目验证您的电子邮件。有关更多信息,请参阅谷歌文档:

因此,在回复评论时,我通过在我的域名DNS中添加一条SPF(TXT)记录来解决问题。主机字段设置为@,权重设置为Hardfail


谢谢大家的帮助。

您的域上是否正确设置了SPF和DKIM?(即,
smtp.ionos.co.uk
实际授权代表
noreply@mydomain.com
?)请记住,SMTP允许任何人像其他人一样发送电子邮件,这就是为什么SPF+DKIM在今天如此重要:不仅仅是垃圾邮件,但为了防止网络钓鱼。我希望,由于电子邮件和域名由同一个提供商托管,我将被授权发送电子邮件,但我会检查SPF+DKIM。谢谢你被授权发送电子邮件,这就是问题所在;每个人都有权以任何人的身份发送电子邮件,接收服务器会尝试使用SPF和DKIM设置验证发件人的身份。如果没有设置,任何人都可以使用您的电子邮件地址作为“发件人”标题。奇怪的是,通过该设置,我现在可以发送被识别为已验证的电子邮件,即使将“发件人:”标题编辑到我与其他提供商的一个电子邮件地址。这似乎使身份验证变得毫无意义?