【问题标题】:Cannot set Custom Sender email using PHPMailer and smtp.gmail.com无法使用 PHPMailer 和 smtp.gmail.com 设置自定义发件人电子邮件
【发布时间】:2017-05-04 18:09:58
【问题描述】:

我正在使用 PHPMailer 和 smtp.gmail.com 向我的用户发送电子邮件。 发送电子邮件,这没有问题,但在客户端,在发件人电子邮件地址中,显示的是我的服务器主机电子邮件地址,而不是我使用 PHPMailer->SetFrom() 设置的电子邮件地址。我想将我的电子邮件地址设置为发件人电子邮件。 我正在使用 php 5.4 & PHPMailer 5.2.4 我的代码如下:

<?php 
    require_once('class.phpmailer.php');
    $mail = new PHPMailer(true); 


    try {
      $mail->SMTPDebug  = 2;
      $mail->SMTPAuth   = true;                  
      $mail->SMTPSecure = "ssl";                 
      $mail->Host       = "smtp.gmail.com";      
      $mail->Port       = 465;                   
      $mail->Username   = "myemail@gmail.com";  
      $mail->Password   = "PASSWORD";

      $mail->AddAddress('receiver@email.com', 'John Doe');
      $mail->SetFrom('myemail@email.com', 'My Name');

      $mail->addReplyTo('myemail@gmail.com', 'My Name');
      $mail->Subject = 'PHPMailer Subject';

      $mail->MsgHTML('This is the body');
      $mail->Send();
      echo "Message Sent";

    } catch (phpmailerException $e) {
      echo $e->errorMessage();
    } catch (Exception $e) {
      echo $e->getMessage(); 
    }



?>

【问题讨论】:

  • 您使用的是什么版本的 PHP 和 PHPMailer?为什么你将 true 传递给构造函数?发布问题时请尽量具体。
  • true 用于在发生 PHPMailer 异常时抛出异常。
  • true 传递给构造函数会启用异常,并且代码具有要匹配的try/catch 块。我怀疑 OP 也在使用旧版本的 PHPMailer,因为它没有使用自动加载器,也没有加载 SMTP 类,这在过去几年的所有 PHPMailer 版本中都会失败。

标签: php email gmail phpmailer


【解决方案1】:

这是 gmail 限制 - 它不允许您设置任意地址,但您可以在 gmail 首选项中设置固定别名。这在 PHPMailer 文档中有介绍。这也是一个合理的限制 - 否则您可能正在伪造发件人地址。如果您关心的是回复路由,您可以随时设置回复地址。

【讨论】:

  • 我会支持这个。您应该从您打算让您的用户看到的电子邮件帐户发送电子邮件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 2020-11-25
  • 2015-02-14
  • 2019-01-19
  • 2023-03-20
  • 2016-08-03
相关资源
最近更新 更多