0

我的 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>
4

5 回答 5

1

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

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

如果它返回 false,则错误出在您的脚本中,或者您的邮件服务器不接受该邮件以进行投递。

于 2011-07-01T18:12:49.790 回答
0

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

于 2011-07-01T18:12:42.363 回答
0

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

$headers = "From:" . $from; 

->

$headers = "From: " . $from;

但是,是的,要么是 var_dump,要么是回显 mail():

echo mail($blah,...);

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

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

于 2011-07-01T18:13:29.217 回答
0

我会使用sendgrid之类的工具将其外包,每天免费发送 200 条消息。它确保您的邮件不会被标记为垃圾邮件,因为它使用 DKIM/SPF(不是那么容易处理自己),而且您不必担心缩放问题。


于 2011-07-01T18:37:44.447 回答
0

尽管您可以使用参数和配置变量来更改它,但 php mail() 默认使用 sendmail。如果它没有安装在标准位置,并且您没有明确配置它以使用另一种方法,则 mail() 将失败。

于 2011-07-01T18:53:36.380 回答