在Ubuntu 13.04上,不确定其他发行版。
如果您只是取消默认注释
sendmail_path = "sendmail -t -i"
您的mail()函数都会失败。这是因为,您应该放置完整路径(即/usr/sbin/sendmail -t -i)
文档说明PHP尽力找到正确的sendmail路径,但它显然对我失败了。
因此,始终输入sendmail的完整路径,否则您可能会得到意外的失败结果。
作为次要说明:那些只想强制使用-f参数的人,可以使用php.ini中的以下方法:
mail.force_extra_parameters = [email protected]
您可以将sendmail路径注释掉,它仍然会使用默认值(在UNIX下-t -i选项,如果您查找它们,它们非常重要)....
但是,现在无法更改此设置,即使使用mail()函数的第五个参数也不行。-f很重要,因为如果没有设置,它将设置为运行PHP脚本的任何用户,而您可能不希望这样。
此外,-f设置Return-Path:标头,该标头用作错误发生时的退回地址,以便您可以处理它们。由于某种原因,您无法在mail()标头中设置Return-Path: ... 以前您可以。