Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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,无法设置所需的“发件人”电子邮件_Php_Email_Phpmailer - Fatal编程技术网

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计划。。。