PHP mail()不发送电子邮件

时间:2012-09-28 11:44:24

标签: php email

我在网页上有一个表单,使用PHP mail()函数通过电子邮件发送详细信息。表格很长,我也包括电子邮件的HTML格式 如果我不包含所有表单信息,则电子邮件发送正常,但当我尝试包含整个表单时,电子邮件不会被发送。当我收集太多信息时似乎停止了工作。一旦我拿出一些信息,它就会再次起作用,我删除哪一部分信息并不重要 我在两个不同的网站主机上尝试了同样问题的表单。电子邮件的内容只有大约300行,所以我不确定尺寸是否是问题。

有谁知道可能导致问题的原因?

here is my code for your reference

当我在上面说“停止工作”时,我的意思是mail()函数返回false并且不发送电子邮件。实际形式工作正常。

2 个答案:

答案 0 :(得分:1)

当你在PHP脚本中找到大量的HTML时,在变量中捕获它是有用的,而不是将每一行放在$ body变量中。

ob_start();
?>
<html>
   Your HTML.
</html>
<?
$body = ob_get_clean();

通过这种方式,您可以更轻松地查看邮件是否存在问题,从而破坏了邮件功能。

答案 1 :(得分:1)

这是description of the php mail function。本文档以及本文档What is the PHP Mail Character Limit指定正文的每一行不得超过70个字符。

此stackoverflow What is the maximum length of a string in PHP以及其他来源表明PHP没有特定的限制,除了你的字符串看起来很好的总内存限制。

此外,有几个不同的地方可能会出现故障,而且您没有指定您在失败时看到的行为。

首先,检查mail()的返回值,以确定PHP是否能够将消息传递给邮件代理MTA。接下来请确保指定good to和return地址,以便在邮件代理中出现问题时,它将向您发送描述问题的某种回复。

上面的Undrium提供的答案的详细说明。以下是根据他的回答提供其他材料的链接。

这是ob_get_clean() documentation

这是example using ob_get_clear() with sending HTML Email