2013-01-18 40 views
0

所以問題是,有時,在我的網站上使用PHP郵件表單時,它只會發送主題行和空的主體!但是這隻發生在有時候。實際上很少。我收到來自網站用戶的電子郵件(帶有主題行,但是空白的主體),所以我認爲他們剛剛提交了表單,直到我自己測試了一些電子郵件,並且我自己最終得到了一些空白郵件!同樣,主題行總是在那裏。PHP郵件有時只發送主題(空身)

表單代碼在這裏:

$to = "[email protected]"; 
$subject = $_POST['subject']; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message\n"; 

mail($to, $subject, $body); 

難道你們有什麼想法:

echo "<form method='POST' action='item.php?id=$strItemNumber'> 
<table><tr><td style='vertical-align:middle;'> 
Subject:<BR /> 
<input type='text' name='subject' value='Item # $strItemNumber' size='19'><br /> 
Name:<BR /> <input type='text' name='name' size='19'> 
<br />Your Email:<br /> 
<input type='text' name='email' size='19'> 

</td><td> 
Message:<BR /> 
<textarea rows='9' name='message' cols='60'></textarea> 

</tr></table> 
<input type='submit' value='Send Email' name='submitted'> 
</form>"; 

電子郵件功能在這裏的代碼?

謝謝

+3

它聽起來完全像一個代碼問題。請提供。 – PlantTheIdea

+0

郵政。你的。碼。 – Sammitch

+0

沒有冒犯,但雅虎虛擬主機比您的一次性代碼更不容易出錯。 – glomad

回答

0

更改$body以下幾點:

$body = "From: {$name_field} E-Mail: {$email_field} Message: {$message}"; 
+0

MOOSEMAN,試試這給了我空白的電子郵件。所有這些都是空白,當我改變這個...嗯 –

+0

,但我認爲你絕對正在跟蹤的東西。變量$ body必須不被設置爲任何東西。讓我改變字符串的構建方式,看看它是否工作.... –

+0

好吧,所以我改變了字符串的構建方式。現在是: $ body =「From:」。 $ name_field。 「\ n電子郵件:」。 $ email_field。 「\ n消息:」。 $消息; 我想我會在一兩天內等待觀望,如果還沒有解決,我會看到一封來自我的測試或者網站用戶的空白電子郵件,我會知道結果。 –

0

確定。這個答案是給原始的海報。我有幾個小時的相同的確切問題。當我發現一個小知識吸引了我的注意力時,我正在牆上敲打我的頭。原來,身體必須由線組成。每一行必須以臭名昭着的'\ n \ r'結尾。這可能會或可能不會在電子郵件中顯示,但對電子郵件正文字符串很重要。每條線不能超過特定的長度。在Yahoos案件中,我不知道確切的長度,但維基陳述了70個字符的長度。我認爲這不是確切的。由於我的電子郵件數據是html代碼,因此我只是將'\ n \ r'添加到每個html代碼的末尾。我再也沒有這個問題了。我懷疑你偶爾發送的郵件正文超出了線路長度的數據限制,只是發送空白郵件正文。

示例串:

"<body>Hello World</body>\n\r<i>Something, something, darkside</i>\n\r..." 

至少對我來說,這解決了這個問題,我也是在Yahoo!

我意識到這篇文章是一個古老的神器,通過互聯網標準,但我看到很多-O相關聯的,我敢肯定有人會發現它得心應手。