Phpmailer,无法设置所需的“发件人”电子邮件
这个代码是工作,电子邮件是发送的Phpmailer,无法设置所需的“发件人”电子邮件,php,email,phpmailer,Php,Email,Phpmailer,这个代码是工作,电子邮件是发送的 $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
$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";
}
但出于某种原因,如果我从电子邮件改为name2@yahoo.com
$mail->setFrom("name2@yahoo.com", "Name");
电子邮件不再发送了。Phpmailer不报告任何错误消息
name2@yahoo.com是与此web服务器相关的有效工作电子邮件地址
谢谢。这在PHP编译器故障排除指南中有介绍 大多数服务提供商现在都有严格的SPF和DMARC配置,尤其是雅虎,因为他们发明了DMARC,这意味着您只能通过他们自己的邮件服务器或SPF记录中包含的任何其他服务器从他们域中的地址发送邮件 您的代码是通过您自己的本地服务器发送的,该服务器不是Yahoo服务器,因此无法工作 解决方案是通过Yahoo自己的服务器对您的电子邮件帐户进行身份验证,例如:
$mail->isSMTP();
$mail->Host = 'smtp.mail.yahoo.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->Username = 'me@yahoo.com';
$mail->Password = 'password';
Yahoo的DMARC配置不允许您伪造发件人地址,因此您只能使用与用户名匹配的发件人地址-这可能是您看到的症状的原因。如果您不更改代码但更改凭据,则第二封电子邮件显然不起作用。您是否检查了凭据是否正确,或者是否允许通过SMTP发送?谢谢。我再次检查了一下,发现我可以用gmail domen发送信件,但不能用yahoo。Synchro是对的,是DMARC,今天我收到了一封信。关于您的问题,在这个主机上不需要为phpmailer设置凭据,它们会以某种方式自动设置。我不知道细节,谢谢。你说得对,我想了想,但找不到正确的信息。我再次检查了一下,发现我可以用gmail domen发送信件,但不能用yahoo。同样在今天,我收到了一封带有下一个文本的电子邮件:主机gmail-smtp-in.l.google.com说:由于域名的550-5.7.1 DMARC政策,来自yahoo.com的550-5.7.1未经验证的电子邮件不被接受。如果550-5.7.1这是一封合法邮件,请联系yahoo.com域管理员。请访问550-5.7.1了解550 5.7.1 DMARC计划。。。