2013-02-10 235 views
2

我想使用PHP郵件功能從我的網站發送電子郵件。網站上的用戶以HTML格式輸入他們的電子郵件。我已經測試了郵件功能並在郵件正文是小如它的工作原理:通過PHP郵件功能發送電子郵件功能不適用於長電子郵件

this is an email 

然而,當我鍵入一個很長的電子郵件,該mail()函數返回1但沒有電子郵件實際收到。派遣電子郵件的代碼很簡單:

$email_message = $_POST['email_mssg_from_form']; 
$ret = mail($to, $subject, $email_message); 

我曾嘗試使用以規範的$email_message內容:

$email_message = wordwrap($email_message, 70, "\r\n");  
$email_message = addslashes($email_message); 

但這並沒有幫助。我不知道如何處理報價和排長隊。正常情況下,當用戶在表單上鍵入電子郵件時,將出現連續的文本行,並且只有段落將被分隔\r\n

+0

'$ email_messaage'包含'POST'變量的值,但使用的是'$ email_message'送到'mail()'函數中。這是正確的,還是一個錯字? – Achrome 2013-02-10 23:40:34

+0

檢查你的郵件服務器日誌然後閱讀這個 - :http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html有很多的posibilites排除 – 2013-02-10 23:43:48

+0

但服務器發送郵件時,郵件信息不是很長和複雜。所以我處理$ email_message字符串的方式出了問題。 – 2013-02-10 23:46:17

回答

3

我有類似的問題,其中消息的長度導致不一致。這就是爲我做的伎倆:

使用該行使用Base64編碼整個消息:

$email_message = chunk_split(base64_encode($email_message)); 

然後,添加一個報頭到郵件追加這是你的頭:

$headers = "Content-Transfer-Encoding: base64\r\n\r\n"; 

這將告訴郵件客戶端您的郵件是base64編碼的。

你將不得不修改調用郵件()函數的如下:

mail($to, $subject, $email_message, $headers); 
+0

輝煌謝謝!它完成了這項工作。 – 2013-02-11 12:34:13

相關問題