Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自PHPMailer的设置不工作_Php_Phpmailer - Fatal编程技术网

来自PHPMailer的设置不工作

来自PHPMailer的设置不工作,php,phpmailer,Php,Phpmailer,在phpmailer库的帮助下,我正在使用gmail SMTP发送邮件。它可以发送邮件,但不是从我在SetFrom address中设置的邮件地址发送。这是我的密码: <?php require 'phpmailer/class.phpmailer.php'; $mail = new PHPMailer; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->Host = "smtp.gmail.com"; $mail->

在phpmailer库的帮助下,我正在使用gmail SMTP发送邮件。它可以发送邮件,但不是从我在SetFrom address中设置的邮件地址发送。这是我的密码:

<?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但我想把它和'donotreply@mydomain.com'如$mail->From中所设置。非常感谢您的帮助。

升级至phpmailer的最新版本。您还应该确保在查看错误消息时启用调试

$mail->SMTPDebug  = 2;
您将识别错误。还要确保您的SMTP服务器凭据正确。比如主机、用户名和密码。
我的工作正常

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

我的解决办法是增加

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

通过这种方式,至少在您回复邮件时,邮件将按所述方式发送

还有另一种方式可以在phpmailer中设置发件人地址,因此它得到了更好的支持。我发现我使用phpmailer的服务器没有从同一主机向另一台服务器发送电子邮件。但是我改变了设置发件人地址的方式,它解决了这个问题

使用:


取代$mail->From和$mail->FromName。

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

设置>帐户和导入>以以下方式发送邮件: 将另一封电子邮件设置为从以下地址使用:

如果您正在使用zoho,那么您可以遵循以下步骤: 设置>邮件选项卡>邮件发送方式>添加发件人地址 然后验证电子邮件。

对于GSuite用户

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


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

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


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

您是否阅读了谷歌关于@Anigel的言论:假设您正在制作一份联系表单并使用phpmailer发送邮件。“发件人地址”将是用户在“电子邮件地址”字段中填写的地址,“收件人地址”将是您的电子邮件id。在这种情况下,每次对于不同的用户,“发件人电子邮件”将始终不同。所以,我们需要在$mail->From中设置它。这就是我正在做的。我认为这与你的链接文章没有任何关系。我认为你没有读过这篇文章,谷歌说你只能从你的谷歌账户中配置的地址发送。你不能只是以jo.bloggs的身份登录并从jane.doe发送电子邮件如果你想做你刚才描述的事情,那么你不能使用gmail SMTP,您将不得不使用另一个允许您以任何人的身份发送电子邮件的服务器,并且您将在许多邮件服务器上过滤或阻止垃圾邮件,因为您的邮件服务器与来自地址的用户的适当邮件服务器不匹配,即它将无法通过SPF检查您的意思是,如果我们创建联系人表单,我们不应使用phpmailer,因为有了它,它可以阻止许多邮件…不,我的意思是,gmail只允许你从一个与你的谷歌帐户链接的地址发送电子邮件。无论您是否使用phpmailer、通用php、c、java或任何语言,这都无关紧要,因为这是对您尝试使用的google mail服务器的限制,而不是phpmailer的限制。感谢您强调根本原因。如果您在gsuite上,并且可以设置别名,那么将所需电子邮件添加为别名将允许您将该电子邮件设置为发件人电子邮件地址。
$mail->SetFrom('donotreply@mydomain.com', 'Admin');