PHPMailer没有发送正确的'来自'地址

时间:2014-09-24 08:33:39

标签: php email smtp gmail 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");

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

注意我显然已经从上面的代码中删除了正确的帐户详细信息和真实地址。

2 个答案:

答案 0 :(得分:4)

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

有规定从地址(而不是整个域)设置特定的,但你必须事先设置它们;你不能只是从随机地址发送。请参阅this answer

答案 1 :(得分:-1)

更改下面提到的部分:

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

$mail->addAddress($to); 
$mail->From = $from;
$mail->FromName = $from_name;

希望它能奏效。

问候。