2011-05-18 50 views
1

我在窗體上使用PHP的mail()函數將電子郵件發送到具有自動響應的地址。不幸的是,由於電子郵件是從表單生成的,因此它會嘗試回覆[email protected],該表單不存在,然後反彈回來。PHP郵件()函數自動響應

mail("[email protected]", $email_subject, $email_message, $headers); 

其它信息:

$email_from = "[email protected]"; 

$headers = "From: ".$email_from; 
$headers .= "\nReply-To: ".$email_from; 
$headers .= "\nReturn-Path: ".$email_from; 
$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

有什麼辦法解決這一問題?我如何設置正確的返回地址?

編輯:我應該說,當響應到達時,回覆地址IS正確設置爲$ email_from。無論如何,自動回覆者仍會嘗試將其發送至[email protected]

+0

什麼是自動應答?這取決於自動響應者如何閱讀標題 – JamesHalsall 2011-05-18 18:05:09

回答

1

返回路徑不像其他郵件標題。這是一個所謂的「信封標題」。這些由MTA設置,而不是由實際郵件標題部分的字段設置。大多數MTA都有一個用於設置返回路徑的特殊標誌。在後綴,Sendmail和進出口銀行它是f標誌,所以這些系統通常可以調用mail是這樣的:與fifth parameter

mail($to, $subject, $message, $additional_headers, '-f'.$email_from); 
1

您可以設置Return-Path(如果那是你的意思):

布爾郵件(字符串$到,串 $主題,字符串$消息[,串 $ additional_headers [,串 $ additional_parameters]])

...其中:

additional_parameters(可選)

的additional_parameters參數可被用於傳遞 附加標誌作爲命令行選項 到被配置爲 程序發送郵件時使用,如定義 由sendmail_path配置 設置。例如,當使用sendmail和-f sendmail選項時,可以使用 來設置信封發件人地址 。

,所述網絡服務器運行作爲應添加作爲受信任的用戶 到sendmail配置到 用戶防止被添加到所述消息從一個 「X-警告」報頭時 信封發件人(-f)是使用這種方法設置 。對於sendmail用戶,這個文件 是/ etc/mail/trusted-users。

將其設置爲[email protected]應該有所斬斷。

在任何情況下,我認爲,自動應答應該使用從From頭部地址(如果沒有Reply-To提供),但是,很好哦... :)