.php简单的联系表格不会发送电子邮件

时间:2015-03-30 04:05:41

标签: php html forms email

我创建了一个非常简单的HTML表单,并从教程中逐字创建了一个PHP表单,只更改了我需要更改的表单以匹配我的HTML表单。我没有收到任何错误消息,但表单永远不会发送电子邮件。我在下面发布了两个代码:

HTML

<form action="general.php" method="post" name="genform">
   <label class="contact" for="pronom">First Name:</label>
   <input type="text" name="pronom" autofocus required>
   <label class="contact" for="surname">Last Name:</label>
   <input type="text" name="surname" required><br><br>
   <label class="contact" for="email">Email:</label>
   <input type="email" name="email" required>
   <label class="contact" for="date">Date:</label>
   <input type="date" name="date"><br><br>
   <label class="contact" for="text">Question/Concern:</label>
   <textarea name="text" rows="6" cols="50" required></textarea><br><br>
   <input type="submit" name="send" value="Send Message">
</form>

PHP

<?php
if (isset($_POST['send'])) {
$to = 'me@mymail.org'; //*Changed this, obviously, as well as below
$subject = "New message from $name";
$message = "First Name: " . $_POST['pronom'] . "\r\n\r\n";
$message .= "Last Name: " . $_POST['surname'] . "\r\n\r\n";
$message .= "Email: " . $_POST['email'] . "\r\n\r\n";
$message .= "Date: " . $_POST['date'] . "\r\n\r\n";
$message .= "Message: " . $_POST['text'];
$message = wordwrap($text, 70);
$headers = "From: webmaster@pittcountyaoh.org\r\n";
$headers .= 'Content-Type: text/plain; charset=utf-8';
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($email) {
    $headers .= "\r\nReply-To: $email";
}
$success = mail($to, $subject, $message, $headers, '-fme@mymail.org');
}
?>
<?php if (isset($success) && $success) { ?>
<h1>Thank you!</h1>
<p3>Your message has been sent, and someone will get back to you shortly.</p3>
<?php } else { ?>
<h1>Oops!</h1>
<p3>There was a problem sending your message.</p3>
<?php } ?>

我用一个非常简单的测试php测试了邮件功能,并且它有效。我检查了垃圾邮件和其他一切。有人可以提供一些建议吗?

3 个答案:

答案 0 :(得分:0)

更改此行

$headers .= 'Content-Type: text/plain; charset=utf-8';

要,

$headers .= "Content-Type: text/plain; charset=utf-8'";

如果仍然存在错误,请尝试此

error_reporting(E_ALL);
ini_set('display_errors', '1');

也尝试从这样的地址参数中删除

$success = mail($to, $subject, $message, $headers);

答案 1 :(得分:-1)

邮件功能如果邮件已成功接受传递,则返回TRUE,否则返回FALSE。

重要的是要注意,仅仅因为邮件已被接受发送,并不意味着邮件实际上会到达目的地。

答案 2 :(得分:-1)

在使用$ _POST []的行中,请尝试使用一些硬编码值。如果它使用硬编码值,则表示您的电子邮件功能正常工作,问题出在$ _POST变量中。

在这行代码之前

if(isset($ _ POST ['send'])){

检查$ _POST的值使用以下代码行

var_dump($ _ POST ['your keys']);死;

查看表单中的值是否存在。

即使它不起作用,也可以尝试使用非常简单的表单将数据发布到服务器。从在线获取一些具有php文件工作形式的示例代码,然后根据您的需要进行修改。

我认为您的输入标记存在问题。尝试使用按钮标签。