【问题标题】:PHP mail: What does -f do?PHP 邮件:-f 有什么作用?
【发布时间】:2016-10-11 15:34:22
【问题描述】:

在使用电子邮件主机对联系表单进行故障排除时,他们告诉我在 php 邮件功能的发件人地址中使用“-f”。 “-f”标志有什么作用,为什么它会成为允许发送电子邮件的解决方案?我阅读了一些文档,但不是很清楚。

示例代码:

mail($emailAddress, $mailSubject, $mailBody, $headers, '-f ' . $mailFrom);

PS:没有“-f”,它适用于大型电子邮件主机(hotmail、gmail 等,但无论出于何种原因,不适用于我正在使用的较小主机)

谢谢

【问题讨论】:

  • 您的示例缺少 Additional_headers 参数。
  • 既然在 mail() 函数中已经有一个地方可以指定一个“发件人”地址,所以有一个额外的 -f 选项很奇怪
  • 正如@nickb 所说,这是正确的参数顺序:($email_to, "$email_subject", $email_body, $email_headers, '-f ' . $email_from)

标签: php


【解决方案1】:

-f 是邮件程序(通常是 sendmail)的参数。来自the docs

additional_parameters 参数可以用来传递额外的 标记为配置为使用的程序的命令行选项 发送邮件时,由 sendmail_path 配置定义 环境。 例如可以用来设置信封发件人 使用带有 -f sendmail 选项的 sendmail 时的地址。

这里是man page for sendmail,你可以看到-f选项的作用:

-fname           Sets the name of the ``from'' person (i.e., the sender of the
                 mail).  -f can only be used by ``trusted'' users (normally
                 root, daemon, and network) or if the person you are trying to
                 become is the same as the person you are.

【讨论】:

  • 只是后续@nickb,示例中的-f 是第四个参数,PHP 文档提到这应该是第五个 - 我在这里读错了吗?
  • @hafichuk - 该示例缺少电子邮件标题 - 它是 mail() 的第 5 个参数。
  • 那么它是否只是将发件人电子邮件地址标记为从虚拟主机服务器上的受信任用户发送?除此之外,我没有编写此代码,只是对其进行维护,但是将发件人地址设为用户在表单中输入的电子邮件地址是否是一种好习惯?
  • 它设置电子邮件信封的电子邮件地址(发件人),这必须是您的小型主机正在读取的内容,以确定谁发送了邮件(而不是 From: 标头,或者两者兼而有之)。
  • @ToddBFisher - 当您允许用户指定一个地址作为电子邮件的发件人时,您应该小心......他们可以将合法的电子邮件地址欺骗给毫无戒心的用户(即使原始电子邮件/标题会显示电子邮件是非法的)。
【解决方案2】:

-f 选项是设置退回邮件地址。在没有人的情况下发送邮件会对通过邮件计算的垃圾邮件分数产生负面影响。对于某些主机,分数低的消息有时会被过滤掉。

您可以使用https://www.mail-tester.com/ 来测试您的消息的分数。您可以使用或不使用 -f 标志过期并查看分数变化。

【讨论】:

    【解决方案3】:

    它是一个标志,用于标记以下文本 ($mailFrom) 以用作邮件的“发件人”地址。

    看看:http://www.php.net/manual/en/function.mail.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多