SetFrom PHPMailer无法正常工作

Pre*_*wal 9 php phpmailer

我使用gmail SMTP在phpmailer库的帮助下发送邮件.它正在发送邮件,但它不是从我在SetFrom地址中设置的邮件地址发送的.这是我的代码:

<?php
require 'phpmailer/class.phpmailer.php';
$mail = new PHPMailer;

$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "myusername@gmail.com";
$mail->Password = "gmail_password";

$mail->From         = 'donotreply@mydomain.com';
$mail->FromName     = 'Admin';
$mail->AddAddress('Toreceiver@test.com', 'Receiver');  // Add a recipient
$mail->IsHTML(true);

$mail->Subject = 'Here is the Subject';
$mail->WordWrap = 50;  
$mail->Body = "This is in <b>Blod Text</b>";
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->Send()) {
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Message has been sent';
?>
Run Code Online (Sandbox Code Playgroud)

它从myusername@gmail.com发送邮件,但我希望它与$ mail-> From中设置的'donotreply@mydomain.com'一起发送.任何帮助将受到高度赞赏.

小智 8

是的,这是Google Mail限制."发件人"电子邮件地址必须与Google SMTP相匹配或自动设置.

我的解决方案是添加

$mail->AddReplyTo($FromEmail, $FromName);
Run Code Online (Sandbox Code Playgroud)

这种方式至少如果您回复该消息,它将按照描述传递

  • 感谢您强调根本原因。如果您使用的是 gsuite 并且可以设置别名,那么添加所需的电子邮件作为别名将允许您将其设置为发件人电子邮件地址。 (2认同)

Jar*_*noV 7

还有另一种从phpmailer中的地址设置的方法,它得到了更好的支持.我发现我使用phpmailer的服务器没有将电子邮件从同一主机传递到另一台服务器.但后来我改变了我如何设置起始地址并解决问题的方式.

使用:

$mail->SetFrom('donotreply@mydomain.com', 'Admin');
Run Code Online (Sandbox Code Playgroud)

而不是$ mail-> From和$ mail-> FromName.


Jyo*_*hul 5

如果您想使用不同的电子邮件地址作为 sentFrom,那么您可以从 Gmail 设置中设置您的电子邮件:

设置 > 帐户和导入 > 将邮件发送为:设置您要使用的另一封电子邮件:

如果您使用的是 zoho,那么您可以按照以下步骤操作:设置 > 邮件选项卡 > 发送邮件为 > 添加发件人地址,然后验证该电子邮件。


小智 -2

升级到 PHPMailler 的最新版本。您还应该确保打开调试以便查看错误消息。

$mail->SMTPDebug  = 2;
Run Code Online (Sandbox Code Playgroud)

您将识别错误。另请确保您的 SMTP 服务器凭据正确。如主机、用户名和密码。我的工作正常