2012-09-16 67 views
18

是否可以通過PHP的mail()函數更改電子郵件中的Return-Path值?更改PHP郵件函數中的返回路徑

在我發送到我的網站的電子郵件中,它的值是'[email protected]',它在電子郵件傳遞失敗的過程中導致一些問題。我想將其設置爲我的電子郵件地址。

這裏是我曾嘗試代碼:

$headers = 'MIME-Version: 1.0' . "\n"; 
$headers .= "Content-type: text/html; charset=utf-8" . "\n"; 
$headers .= "Return-Path: <[email protected]>"."\n"; 
$headers .= "Errors-To: <[email protected]>"."\n"; 
// Additional headers 
$headers .= "To: [email protected]oo.com <[email protected]>" . "\n"; 
$headers .= "From: [email protected] <[email protected]>"; 
// Mail it 
mail('[email protected]', 'test', 'salam', $headers, "f"); 

回答

31

您可以設置回覆&返回路徑爲標頭,如下

$headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: [email protected]' . "\r\n" . 
'Return-Path: [email protected]' 

或 作爲第五個參數來調整返回路徑

mail($to, $subject, $message, $headers, "-f [email protected]"); 

where [email protected] should repl通過你的郵件提高。

+0

我試試這個,但返回路徑不會改變。我檢查收到的郵件的全標題,它仍然是一樣的。 –

+4

嘗試在-f後放置空格並檢查。 「-f [email protected]」 – GBD

+4

我認爲'\ r \ n'需要用雙引號,而不是單引號。 –

4

問題是郵件格式需要標題使用\r\n行結尾...不是\n,這個技巧是有些服務器會接受兩個(它們爲你轉換,它似乎神奇地工作),而其他人會考慮那些沒有\r\n結尾是無效的,基本上忽略所有的標題。因此,嘗試改爲:

$headers = "MIME-Version: 1.0\r\n". 
    "Content-type: text/html; charset=utf-8\r\n". 
    "Return-Path: [email protected]"; 
mail ("[email protected]","test","salam",$headers); 

順便說一句,返回路徑預計的RFC1123郵箱(不包括尖括號,就在電子郵件地址)...不知道爲什麼你要設定的返回路徑,如你的例子,因爲它是從相同的地址(如此多餘)

+0

這只是拯救了我的一天。我的返回路徑被忽略,並且默認回到www-data ..從'\ n'更改爲'\ r \ n',並且按預期工作。 – billynoah

+3

-1因爲這不回答問題,並給出非工作代碼。你有一個隨機的''f''作爲'mail()'的最後一個參數。有一個'-f'標誌。只是輸入'f'是一個錯誤。 – 2015-08-28 19:04:08