PHP邮件无法正常运行

时间:2011-07-01 18:06:12

标签: php contact-form

我的PHP联系表单不会在任何地方发送我的电子邮件,无论是收件箱还是垃圾邮件。 PHP是最新版本,运行在安装了SMTP的服务器上。 我不确定这是我的代码还是软件......

继承我的php联系脚本:

    <?php
$to = "FILTERED";
$subject = $_POST['subject'];
$message = $_POST['message'] ." From: " .$_POST['email'];
$from =    "contactform@contact.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
?>

和我的表格:

<form method='post' action='contactscript.php'>
  Email: <input name='email' type='text' /><br />
  Subject: <input name='subject' type='text' /><br />
  Message:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>

5 个答案:

答案 0 :(得分:1)

要确定问题是在您的代码中还是在外部软件中,请检查mail()的返回值。

if ( mail($to,$subject,$message,$headers) ) {
    echo "Message was sent";
}
else {
    echo "Sending failed.";
}

如果返回false,则错误在于您的脚本,或者邮件服务器不接受邮件传递。

答案 1 :(得分:0)

我希望 - $ to =“FILTERED”;表示您将过滤后的电子邮件地址放在$ to中。如果mail()失败,您应该在PHP中出错。启用错误报告或检查日志文件。如果mail()没有失败,那么它不再是PHP问题,你应该检查邮件服务器。您还可以尝试使用带有硬编码值的mail()发送邮件,以查看邮件是否熄灭。

答案 2 :(得分:0)

也许在From冒号之后添加一个空格?

$headers = "From:" . $from; 

- &GT;

$headers = "From: " . $from;

但是,无论是var_dump还是echo out mail():

echo mail($blah,...);

1表示成功,0表示失败。

此外,$ to似乎不是有效的电子邮件地址..

答案 3 :(得分:0)

我会使用类似sendgrid的内容将其外包给每天200条消息的免费计划。它确保您的邮件不会被标记为垃圾邮件,因为它使用DKIM / SPF(不是那么容易处理),而且您不必担心扩展。


答案 4 :(得分:0)

虽然你可以用params和config变量来改变它,但是php mail()默认使用sendmail。如果它未安装在标准位置,并且您没有明确配置它以使用其他方法,则mail()将失败。