PHPMailer使用SMTP身份验证发送电子邮件,但Gmail仍声称无法验证发件人
我正在使用PHPMailer从我的PHP脚本发送经过SMTP验证的电子邮件。PHPMailer脚本工作正常,不会抛出任何错误,我也会收到测试电子邮件,但它们在我的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
<?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设置验证发件人的身份。如果没有设置,任何人都可以使用您的电子邮件地址作为“发件人”标题。奇怪的是,通过该设置,我现在可以发送被识别为已验证的电子邮件,即使将“发件人:”标题编辑到我与其他提供商的一个电子邮件地址。这似乎使身份验证变得毫无意义?