Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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_Email_Smtp_Gmail_Phpmailer - Fatal编程技术网

PHPMailer未使用正确的';从';地址

PHPMailer未使用正确的';从';地址,php,email,smtp,gmail,phpmailer,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->SMT

我正在使用链接到我的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帐户。是否有任何方法可以将其配置为工作


注:我显然忽略了上述代码中正确的账户详细信息和真实地址。

更改下面提到的部分:

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

希望它能起作用


关于。

更改下面提到的部分:

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

希望它能起作用


问候。

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


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

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



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

谢谢,但这不起作用。它仍然来自同一个电子邮件地址,“发件人名称”现在显示为“root用户”。兄弟,你能从以下链接遵循PHPMailer的约定吗:。这里写得很清楚。如果您在这方面需要帮助,请告诉我。:)我想如果你用下面的话会对你有帮助$邮件->发件人=$sender\u电子邮件$邮件->FromName=$sender\u name$邮件->地址($receiver\u email,$receiver\u name);我知道这是在PHPMailer上执行的方式,但是你的方法对我不起作用。我想这可能与我的gmail帐户无法从别名地址发送邮件有关。当它通过那个帐户时,它会自动地被打上作为发送者的电子邮件地址的印记。谢谢,但这不管用。它仍然来自同一个电子邮件地址,“发件人名称”现在显示为“root用户”。兄弟,你能从以下链接遵循PHPMailer的约定吗:。这里写得很清楚。如果您在这方面需要帮助,请告诉我。:)我想如果你用下面的话会对你有帮助$邮件->发件人=$sender\u电子邮件$邮件->FromName=$sender\u name$邮件->地址($receiver\u email,$receiver\u name);我知道这是在PHPMailer上执行的方式,但是你的方法对我不起作用。我想这可能与我的gmail帐户无法从别名地址发送邮件有关。当它通过那个帐户时,它会自动地被打上作为发送者的电子邮件地址的印记。我发誓我不是个混蛋但是你真的需要phpMailer吗?我问这个问题是因为PHP有一个内置函数,如果你不需要附件之类的东西,它会发挥神奇的作用。正如phpmailers docus中所述,它有局限性,但是如果你不需要手提钻来杀死苍蝇,为什么要使用它呢?(很明显,我假设这是一只小苍蝇)@MoshMage我使用的是微软Azure服务器。PHP mail()不起作用。这就是在这里使用SMTP的全部意义。嘘。让我试着读一下这些文件,看看是否可以help@MoshMage直接调用
mail()
是一个非常糟糕的主意-绝大多数示例代码都是错误的、不完整的或易受攻击的。例如,PHP文档页面上的所有代码示例都容易受到标题注入的攻击,并且无法正确编码标题和正文。@Synchro从未真正想过您可以注入
mail()
(主要是因为我从未想过自己会这样做),但奇怪的是,我总是确保“发件人”只是一封电子邮件(如中所示,regex将输入和匹配到电子邮件表单);也就是说,虽然它可以被注入,但预防起来并不难。但是!很高兴知道将来要防止这种暴行。谢谢你。我发誓我不是个傻瓜,但是,你真的需要phpMailer吗?我问这个问题是因为PHP有一个内置函数,如果你不需要附件之类的东西,它会产生奇迹。它也有局限性在phpmailers docus中声明,但如果你不需要手提钻来杀死苍蝇,为什么要使用它?(我显然假设它是一只小苍蝇)@MoshMage我使用的是Microsoft Azure server.PHP mail()不起作用。这就是在这里使用SMTP的全部意义。嘘。让我试着阅读他们的文档,并检查我是否可以help@MoshMage打电话给
mail()真是个坏主意
直接-绝大多数示例代码都是错误的、不完整的或容易受到攻击。例如,PHP文档页面上的所有代码示例都容易受到标头注入的攻击,并且无法正确编码标头和正文。@Synchro从未真正想到您可以注入
mail()
(主要是因为我从来没有想过自己做这件事),但奇怪的是,我总是确保“发件人”只是一封电子邮件(比如,regex输入并与电子邮件表单匹配);也就是说,虽然可以注射,但预防并不难。但是!很高兴知道这一暴行将在未来得到预防。谢谢。我没有注意到他试图从不同的地址发送邮件。我的回答不好。很好兄弟:)谢谢,这证实了我脑海中得出的结论。我没有注意到他试图从不同的地址发送邮件。我的回答不好。回答好的兄弟:)谢谢,这证实了我脑海中得出的结论。