在 Ubuntu 13.04 上,不確定其他發行版。
如果您只是取消註解預設的
sendmail_path = "sendmail -t -i"
您的 mail() 函式都會失敗。這是因為您應該放置完整路徑 (即 /usr/sbin/sendmail -t -i )
文件指出 PHP 會盡力尋找正確的 sendmail 路徑,但它顯然對我失敗了。
因此,請始終輸入 sendmail 的完整路徑,否則您可能會得到意外的失敗結果。
作為次要註解:那些只想強制執行 -f 參數的人,您可以使用以下方式在 php.ini 中執行此操作
mail.force_extra_parameters = -fdo_not_reply@domain.tld
您可以將 sendmail 路徑註解掉,它仍然會使用預設值 (在 UNIX 下 -t -i 選項,如果您查找它們,則它們的設定非常重要)...
但是,現在沒有辦法變更此設定,即使使用 mail() 函式的第五個參數也是如此。 -f 很重要,因為如果未設定,則將設定為 PHP 腳本執行的任何使用者,而您可能不希望這樣。
此外,如果發生錯誤,-f 會設定 Return-Path: 標頭,該標頭用作退回地址,以便您可以處理它們。由於某些原因,您無法在 mail() 標頭中設定 Return-Path: ...您以前可以。現在您必須使用 -f 選項。