2012-08-09 51 views
0

我已經在服務器上安裝了PHP 4.x,我有一個腳本來發送郵件,通常1我收到的10封郵件中將沒有正文,但主題將在那裏。郵件發送代碼如下。從網站獲取空郵件

$headers = "MIME-Version: 1.0 \n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1 \n"; 
$headers .= "From: Contact Form <[email protected]> \r\n"; 
$headers .= "Request Form: $name ($contactid)"; 

$subject = "Request: $name"; 

$body = "Name:&nbsp;$name<br />Email:&nbsp;$email<br />Phone:&nbsp;$phone<br/>"; 

mail("[email protected]",$subject,$body,$headers); 

背後的原因是什麼。這是我寫的腳本或SMTP服務器的問題。

+0

你的代碼假設會拋出一個錯誤「解析錯誤:語法錯誤,意外的T_STRING .....」 發佈正確的代碼 – 2012-08-09 11:41:03

+1

看起來你在這行'$ headers'的末尾有一個流氓語錄。 =「Reply-To:」。$ name。「''; – martynthewolf 2012-08-09 11:48:30

+0

這是一個打字錯誤,我已經糾正它,基本上我想說的是,我可以收到郵件沒有任何解析錯誤,但十個郵件中的一個會在主體中爲空 – n92 2012-08-09 12:01:42

回答

2

根據RFC 2822
頭字段是一個字段名構成的線,後面跟着冒號(「:」),隨後是場體,並且通過CRLF終止。 字段名稱必須由可打印的US-ASCII字符(即,包含33和126之間的值的字符)組成,除了冒號。

您的標題不符合此格式。有些接收郵件服務器可能會更嚴格,因此可能會拒絕您的郵件。將其更改爲:

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: Contact Form <[email protected]>\r\n"; 
$headers .= "Request-Form: $name ($contactid)\r\n"; 

\ R:回車
\ n:換行

它是否解決問題了嗎?

+0

@Vinay:你試過我的回答嗎?它工作嗎? – Jocelyn 2012-08-16 03:16:41