[英]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.