PHP Mail函数只在某些时候工作

时间:2014-05-08 01:45:10

标签: php email

我有一个简单的表单,带有简单的邮件功能:

$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$company = $_REQUEST['company'] ;
$phone = $_REQUEST['phone'] ;
$message= $_REQUEST['message'] ;

mail( "$webmaster_email", "Website Form", "From: noreply@mysite.com",
   "From: $email  \n 
Name: $name \n
Phone: $phone\n 
Message: $message\n ");

header( "Location: $thankyou_page" );

但是,当我测试时,我很少接收来自它的邮件而且似乎卡住了 - 即:它不会重定向到thankyou页面。

我已经安排了回声进行测试,一切正常,直到mail()函数。

我已经与我的托管服务提供商核实过,并且没有邮件队列,而且PHP正常运行。显然,我也检查了我的垃圾邮件文件夹。

有谁知道为什么这只会在某些时候有效?

1 个答案:

答案 0 :(得分:2)

您混淆了mail()函数的第3和第4个参数。第三个参数应包含消息,第四个参数应包含其他标头。当您在第4个参数中发送消息和所有(用户提供的...)变量时,这可能会导致您遇到的问题。

你应该能够改变它交换参数:

mail($webmaster_email, "Website Form",
     "From: $email  \n 
       Name: $name \n
       Phone: $phone\n 
       Message: $message\n ",
     "From: noreply@mysite.com");

您还应该添加错误处理; mail()函数会返回truefalse,具体取决于成功接受传递,因此您只需记录它返回的时间false即可进行故障排除。