【问题标题】:SetFrom PHPMailer not workingSetFrom PHPMailer 不工作
【发布时间】:2013-06-13 11:23:38
【问题描述】:

我在 phpmailer 库的帮助下使用 gmail SMTP 发送邮件。它可以正常发送邮件,但不是从我在 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”发送。任何帮助将不胜感激。

【问题讨论】:

  • 你读过谷歌对sending email from different addresses的评价
  • @Anigel :假设您正在制作联系表格并使用 phpmailer 发送邮件。发件人地址将是用户在电子邮件地址字段中填写的内容,而 toAddress 将是您的电子邮件 ID。在那种情况下,每次对于不同的用户,fromEmail 总是不同的。所以,我们需要在 $mail->From 中设置它。这就是我正在做的事情。我认为它与您的链接文章没有任何关系。
  • 我想你还没有读过这篇文章,谷歌说你只能从你的谷歌账户中配置的地址发送。您不能只以 jo.bloggs 身份登录并从 jane.doe 发送电子邮件并且您将在许多邮件服务器上过滤或阻止垃圾邮件,因为您的邮件服务器与来自地址 IE 的用户的正确邮件服务器不匹配,它将无法通过 SPF 检查
  • 你的意思是说,如果我们正在创建一个联系表单,我们不应该使用 phpmailer,因为它可以阻止许多邮件......
  • 不,我的意思是 gmail 只允许您从与您的 google 帐户关联的地址发送电子邮件。使用 phpmailer、通用 php、c、java 或任何语言都没有关系,因为它是对您尝试使用的 google 邮件服务器的限制,而不是对 phpmailer 的限制。

标签: php phpmailer


【解决方案1】:

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

我的解决方案是添加

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

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

【讨论】:

  • 感谢您指出根本原因。如果您在 gsuite 上并且可以设置别名,那么将所需的电子邮件添加为别名将允许您将其设置为发件人电子邮件地址。
【解决方案2】:

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

用途:

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

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

【讨论】:

    【解决方案3】:

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

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

    如果您使用的是 zoho,那么您可以关注: 设置>邮件选项卡>发送邮件为>从地址添加 然后验证该电子邮件。

    【讨论】:

      【解决方案4】:

      对于 GSuite 用户...

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

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

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

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

      【讨论】:

        【解决方案5】:

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

        $mail->SMTPDebug  = 2;
        

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

        【讨论】:

          猜你喜欢
          • 2015-01-08
          • 1970-01-01
          • 2014-03-14
          • 1970-01-01
          • 1970-01-01
          • 2012-05-21
          • 2014-08-24
          • 1970-01-01
          相关资源
          最近更新 更多