繁体   English   中英

Phpmailer,无法设置所需的“来自”email

[英]Phpmailer, can't set needed 'from' email

此代码有效,发送 email

$mail = new PHPMailer();

$mail->setFrom("name1@gmail.com", "Name");

$mail->addAddress($to); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("name1@yahoo.com", "Reply");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = $subject;
$mail->Body = $body;

if(!$mail->send())
    {
         echo 'Mailer Error: ' . $mail->ErrorInfo . "\n";
    }

但由于某种原因,如果我从 email 更改为 name2@yahoo.com

    $mail->setFrom("name2@yahoo.com", "Name");

电子邮件不再发送。 Phpmailer 不报告任何错误消息。

name2@yahoo.com 是与此 web 服务器相关的有效工作 email 地址。

谢谢。

这在 PHPMailer 故障排除指南中有介绍。

大多数服务提供商现在都有严格的 SPF 和 DMARC 配置(尤其是雅虎,因为他们发明了 DMARC),这意味着您不能从他们域中的地址发送,除非通过他们自己的邮件服务器或他们 SPF 记录中包含的任何其他地址。

您的代码是通过您自己的本地服务器发送的,该服务器不是雅虎服务器,因此无法正常工作。

解决方案是使用 email 帐户的身份验证通过 Yahoo 自己的服务器发送,例如:

$mail->isSMTP();
$mail->Host = 'smtp.mail.yahoo.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->Username = 'me@yahoo.com';
$mail->Password = 'password';

雅虎的 DMARC 配置不会让您欺骗发件人地址,因此您只能使用与您的用户名匹配的发件人地址 - 这可能是您看到的症状的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM