我正在尝试使用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
答案 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);