0

我有一个用于联系目的的简单 php 表单。但是,提交后它不会发送电子邮件或转到正确的页面。它改为重定向到 mail.php。

我的名为contact.php的联系表格如下:

 <form id="contact-form" action="mail.php" method="POST">
    <fieldset>

        <label><span class="text-form">Your Name:</span> <input type="text" name="name"></label>
        <label><span class="text-form">Your Email:</span><input type="text" name="email"></label>
        <label><span class="text-form">Your Contact No:</span><input type="text" name="contact"></label>
        <div class="wrapper">
            <div class="text-form">Your Message:</div>
            <textarea name="message" rows="6" cols="25"></textarea><br />
            <div class="clear">
        </div>
        <div class="buttons">
        <a class="button" href="#"><input class="button" type="submit" value="Send"></a>
        <a class="button" href="#"><input class="button" type="reset" value="Clear"></a>
        </div>

    </fieldset>
</form>

而名为mail.php的php代码如下:

    <?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location:contact.php");
    ?>

我究竟做错了什么。它只是不会将消息发送到电子邮件或重定向到正确的页面?

4

6 回答 6

3

你的语法有点错误。&contact第 5 行应该是$contact. 我假设您在生产服务器上,因此错误报告将被禁用并且您不会收到任何警告。

于 2013-02-19T10:57:01.310 回答
2

尝试在邮件功能之前使用@

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$contact = $_POST['contact'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@whatever.co.za";
$subject = "Contact form message";
$mailheader = "From: $email \r\n";
@mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("location: contact.php");
?>

即使邮件功能产生任何问题,这也会让您通过。另外请检查是否有任何其他标头未使用http://php.net/manual/en/function.headers-sent.php函数发送。

我强烈建议使用 PHPMailer 或其他一些类来发送任何类型的电子邮件。

于 2013-02-19T10:45:25.933 回答
0

请检查contact.php 文件是否发生了从contact.php 到mail.php 的重定向

于 2013-02-19T10:39:16.207 回答
0

我认为从您的服务器发送邮件可能存在问题。mail.php 文件可能会在邮件功能上跳闸,而不是进行重定向。

创建一个新文件,其中仅包含 php 邮件功能(带有您的电子邮件地址和测试消息)并从您的网络浏览器浏览它,它会发送吗?

于 2013-02-19T10:42:29.560 回答
0

尝试在脚本开头使用 ob_start(),然后 exit(); 在 header("位置:contact.php");

像这样……

<?php
    ob_start();
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    &contact = $_POST['contact'];
    $formcontent="From: $name \n Message: $message";
    $recipient = "info@whatever.co.za";
    $subject = "Contact form message";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    header("Location: contact.php");
    exit();
?>
于 2013-02-19T10:48:23.977 回答
0

将 mail.php 更改为以下内容:

<?php
mail("info@whatever.co.za", "Contact form message", $_POST['message'], "From: ".$_POST['name']." <".$_POST['email'].">");
header("Location: contact.php");
?>
于 2013-02-19T10:50:20.197 回答