通过PHP邮件功能发送电子邮件不适用于长电子邮件

时间:2013-02-10 23:37:45

标签: php

我正在尝试使用php邮件功能从我的网站发送电子邮件。网站上的用户以html格式输入他们的电子邮件。我测试了邮件功能,当电子邮件文本很小时它可以工作,例如:

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

分隔

1 个答案:

答案 0 :(得分:4)

我遇到类似的问题,其中消息的长度导致不一致。这就是我的诀窍:

使用此行使用base64编码整个邮件:

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

然后,在邮件中添加标题,将此标题附加到您的标题:

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

这将告诉邮件客户端您的邮件是base64编码的。

您必须按如下方式修改对mail()函数的调用:

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