我的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>
答案 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()将失败。