2013-02-10 174 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

相关问题