【发布时间】:2017-03-10 22:31:40
【问题描述】:
我只涉足了一点 PHP,我正在努力回忆我去年所做的事情。我无法让它工作 - 用户被重定向到 index.php 但没有任何反应。没有收到电子邮件,也没有验证“电子邮件已发送/未发送”等。
我确信这可能是一个愚蠢的错误。
任何帮助将不胜感激。
contact.html
<form method="post" action="index.php">
<label>Name</label>
<input name="name" placeholder="Type Here">
<label>Email</label>
<input name="email" type="email" placeholder="Type Here">
<label>Message</label>
<textarea name="message" placeholder="Type Here"></textarea>
<label>*What is 2+2? (Anti-spam)</label>
<input name="human" placeholder="Type Here">
<input id="submit" name="submit" type="submit" value="Submit">
</form>
index.php
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = $_POST['email']; // GET EMAIL ADDRESS FROM FORM
$to = 'annie.palmer@outlook.com';
$subject = 'Website enquiry from' .$name;
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
$headers = "From: Annie<$from>\r\nReturn-path: $from" . "\r\n";
$headers .= "Content-type:text/text;charset=ISO-8859-1";
?>
<?php
if ($_POST['submit'] && ($_POST['human'] == '4') {
/* Anything that goes in here is only performed if the form is submitted */
if (mail ($to, $subject, $body, $headers, $from)) {
echo '<p>Your message has been sent!</p>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
?>
【问题讨论】:
-
您的 php.ini 是否已正确配置以发送电子邮件?您可以将该文件添加到您的问题中吗? This 可能会有所帮助。
-
如果根本没有 no 输出,那么听起来它甚至还没有到达尝试发送电子邮件的地步。检查 PHP 错误日志,打开错误报告,添加一些额外的
echo语句只是为了跟踪代码在做什么,等等。 -
mail()使用 4 个参数,而不是 5 个。RTM php.net/manual/en/function.mail.php -
@RuhulAmin: "$_POST['human'] == '4' 为什么是 4,是字符串还是数字?你应该使用 $_POST['human'] == 4" - 不,你不应该。通过 GET 或 POST 接收的表单值总是为字符串类型。