2013-11-27 61 views
-2

我使用下面的代码来尝试发送电子邮件 - 我看不到任何问题 - 但它不工作,它显示消息“发送电子邮件”但我没有收到任何东西。邮件()函数似乎没有工作

<?php 
$to = "[email protected]"; 
$subject = "Query"; 
$message_body.="Name: ".$_POST["name"]."<br>\n"; 
$message_body.="JobTitle: ".$_POST["jobtitle"]."<br>\n"; 
$message_body.="Phone: ".$_POST["phone"]."<br>\n"; 
$message_body.="Email: ".$_POST["email"]."<br>\n"; 
$header = "Reply-To: ".$_POST["email"]."\n"; 
$header .= "Content-type: text/html; 
mail($to, $subject, $message_body, $header); 
echo "Email sent"; 
?> 

任何人都可以帮忙吗?

+2

当然,它显示“发送电子邮件”,因为你从不检查它是否实际发送。根据邮件的[手册](http://www.php.net/mail):*如果邮件成功接收发送,则返回TRUE,否则返回FALSE。* – h2ooooooo

+2

注意邮件头注入,永远不要信任用户内容!邮件标题应该用'\ r \ n'换行。 –

+0

首先删除你的'
' –

回答

0

你的榜样缺少“在过去的$标题行

尝试添加:

error_reporting(E_ALL); 
ini_set("display_errors","On"); 

在文件的开头,以显示错误/警告你最有可能的sendmail是不是在您的服务器上运行

2

检查1)为了使邮件功能可用,PHP需要安装并运行的电子邮件系统。要使用的程序由php.ini文件中的配置设置定义。

您刚才提到,没有错误..所以..旁边

检查2)检查功能.. TRUE或FALSE

检查3的返回值),查看是否通过启用的error_reporting任何警告(E_ALL )

检查4)实际邮件发送,但去了垃圾邮件文件夹。

对于邮件(),需要注意的是,只是因为邮件是 接受交付,这并不意味着该邮件实际上将达到 预期目标是非常重要的。

此外,它在Windows和Unix中的工作方式也有所不同。