PHPMailer 没有使用正确的“发件人”地址发送

Coo*_*oop 0 php email gmail smtp phpmailer

我正在使用链接到我的 gmail 帐户的 PHPMailer。

我需要自动加载器,创建一个函数来处理发送邮件,然后触发该函数进行测试。这一切看起来像这样:

require "PHPMailer/PHPMailerAutoload.php";

function sendMail($to, $subject, $body, $from){

  //init PHPMailer
  $mail = new PHPMailer;
  $mail->isSMTP();
  $mail->SMTPAuth = true;
  $mail->SMTPSecure = "tls";
  $mail->Port = 587;
  $mail->isHTML(true);

  //connection settings
  $mail->Host = "smtp.gmail.com";
  $mail->Username = "xxx@xxx.com";
  $mail->Password = "xxxxxxxx";

  //addresses
  $mail->addAddress($to);
  $mail->setFrom($from);

  //create email
  $mail->Subject = $subject;
  $mail->Body = $body;

  //send email
  $mail->send();
}

//sendMail(to, subject, body, from)
sendMail("xxxx@xxxxx.com", "Test Subject", "Test body", "xxxxx@xxxxx.com");
Run Code Online (Sandbox Code Playgroud)

这会将带有正确主题和正文的电子邮件发送到正确的位置,但它会忽略“发件人”地址,并且电子邮件总是说它来自传递电子邮件的 gmail 帐户。反正有没有配置这个工作?

请注意,我显然省略了上面代码中正确的帐户详细信息和真实的往来地址。

Syn*_*hro 5

很简单:默认情况下,Gmail 不允许您将发件人地址设置为非 Gmail 地址,除非他们正在处理您的域;他们会将发件人地址重写为您的 Gmail 地址,正如您所看到的那样。这与 PHPMailer 和 PHP 邮件功能无关。

可以设置特定的地址(而不是整个域),但您必须事先设置它们;你不能只是从随机地址发送。看到这个答案