10

我正在使用 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';
?>

它从 myusername@gmail.com 发送邮件,但我希望它使用 $mail->From 中设置的“donotreply@mydomain.com”发送。任何帮助将不胜感激。

4

5 回答 5

9

是的,这是一项 Google Mail 限制。“发件人”电子邮件地址必须匹配或由 Google SMTP 自动设置。

我的解决方案是添加

$mail->AddReplyTo($FromEmail, $FromName);

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

于 2015-08-22T09:01:12.453 回答
8

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

利用:

$mail->SetFrom('donotreply@mydomain.com', 'Admin');

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

于 2015-11-04T14:06:42.423 回答
5

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

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

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

于 2017-10-10T08:58:10.443 回答
0

对于 G Suite 用户...

Jyohul 说的是正确的做法。您可以在 Google 管理控制台中的“用户”下添加别名。点击用户名,然后点击“用户信息”。在那里你可以添加别名。添加别名后,您可以执行 Jyohul 所说的操作,我添加了一个必要的步骤...:

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

转到您的 Gmail,然后单击右上角的齿轮,然后:

设置>帐户>发送邮件为:然后单击“添加另一个电子邮件地址”。

于 2020-04-26T01:52:38.270 回答
-2

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

$mail->SMTPDebug  = 2;

您将识别错误。还要确保您的 SMTP 服务器凭据正确。像主机,用户名和密码。我的工作正常

于 2014-10-18T09:38:27.283 回答