SetFrom PHPMailer无法正常工作

时间:2013-06-13 11:23:39

标签: php phpmailer

我使用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-&gt; From中设置的'donotreply@mydomain.com'一起发送。任何帮助将受到高度赞赏。

5 个答案:

答案 0 :(得分:7)

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

使用:

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

而不是$ mail-&gt; From和$ mail-&gt; FromName。

答案 1 :(得分:6)

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

我的解决方案是添加

$x != '' and $y != '' and $z != '' and $c != ''

这种方式至少如果您回复该消息,它将按照描述

传递

答案 2 :(得分:2)

如果您想使用不同的电子邮件地址作为sentFrom,那么您可以通过Gmail设置设置电子邮件:

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

如果您使用zoho,那么您可以关注: 设置&gt;邮件标签&gt;发送邮件为&gt;从地址添加 然后验证该电子邮件。

答案 3 :(得分:0)

对于GSuite用户...

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

如果您想使用与sendFrom不同的电子邮件地址,则可以通过gmail设置来设置电子邮件:

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

设置>帐户>以以下方式发送邮件:然后点击“添加其他电子邮件地址”。

答案 4 :(得分:-2)

升级到最新版本的PHPMailler。您还应确保在奥德打开debuging以查看错误消息。

$mail->SMTPDebug  = 2;

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