2011-11-29 210 views
9

在解决与电子邮件主机的联系表单时,他们告诉我在php邮件功能的发件人地址中使用'-f'。 “-f”标志是做什么的,为什么这是一个允许发送电子邮件的解决方案?我阅读了一些文档,但我不太清楚。PHP邮件:-f做什么?

示例代码:

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

PS:没有“-f”只是正常的大电子邮件主机(Hotmail服务,Gmail等,但不管出于什么原因不适合较小的主机I “M与工作)

由于

+2

您的示例缺少additional_headers参数。 – nickb

+0

因为在mail()函数中已经有了一个指定“from”地址的地方,所以如@ nickb所示,有一个额外的-f选项 – ToddBFisher

+0

很奇怪,这是参数的正确顺序:'($ email_to,“ $ email_subject“,$ email_body,$ email_headers,'-f'。$ email_from)' – webeno

回答

9

-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. 
+0

只是一个后续的@nickb,这个例子中的'-f'是第四个参数,PHP文档提到这应该在第五个 - 我在这里读错了吗? – hafichuk

+0

@hafichuk - 示例缺少电子邮件标题 - 它是“mail()”的第5个参数。 – nickb

+0

那么它只是将从电子邮件地址标记为从Web托管服务器上的可信用户发送出去?除此之外,我没有编写这些代码,只是维护它,但将发件人地址作为用户输入到表单中的电子邮件地址是否好的做法? – ToddBFisher

3

-f选项是设置反弹邮件地址。没有人发送消息可能会对通过消息计算的垃圾邮件分数产生负面影响。有些分数低的消息有时会被某些主机过滤掉。

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