0

我是 WordPress 新手。我创建了一个静态页面contact.php。在联系页面中,我有一个联系表格,因此用户会与我联系。当用户单击提交按钮时,它应该转到 index.php 并提示电子邮件发送成功,否则显示不成功..

这是contact.php的代码

<form class="form" method="post" action="/send-email.php">

    <p class="name">
        <input type="text" name="name" id="name" placeholder="Enter your name" size="40" />
        <label for="name">Name</label>
    </p>

    <p class="email">
        <input type="text" name="email" id="email" placeholder="mail@example.com"   size="40" />
        <label for="email">Email</label>
    </p>

    <p class="web">
        <input type="text" name="telephone" id="telephone" placeholder="000-000-000" size="40" />
        <label for="telephone">Telephone</label>
    </p>        

    <p class="text">
        <label for="message">Message</label>
        <textarea name="message" placeholder="Write something to us" cols="40" rows="5" /></textarea>
    </p>

    <p class="submit">
        <input type="submit" value="Send" />
        <input type="reset" value="Cancel" />
    </p>

</form>

发送电子邮件.php

<?php
$ToEmail = 'sample@sample.com';
$EmailSubject = 'Contact Form';
$mailheader = "From: " . $_POST["email"] . "\r\n";
$mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = " <strong>Name:</strong> " . $_POST["name"] . "";
$MESSAGE_BODY .= "<br> <strong>Email:</strong> " . $_POST["email"] . "";
$MESSAGE_BODY .= "<br> <strong>Telephone:</strong> " . $_POST["telephone"] . "";
$MESSAGE_BODY .= "<br><br> <strong>Message:</strong> " . nl2br($_POST["message"]) . "";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die("Failure");


/* echo "<pre>";
  print_r($MESSAGE_BODY);
  echo "<pre>"; */

header("Location: /index");

但它不发送。URL 看起来就像 www.site.com/send-email.php

我在这里缺少什么?有任何想法吗?我将衷心感谢您的帮助。谢谢。

4

2 回答 2

0
<form class="form" method="post" action="index.php">

    <p class="name">
        <label for="name">Name</label>
        <input type="text" name="name" id="name" placeholder="Enter your name" size="40" />

    </p>

    <p class="email">
         <label for="email">Email</label>
        <input type="text" name="email" id="email" placeholder="mail@example.com"   size="40" />

    </p>

    <p class="web">
         <label for="telephone">Telephone</label>
        <input type="text" name="telephone" id="telephone" placeholder="000-000-000" size="40" />

    </p>        

    <p class="text">
        <label for="message">Message</label>
        <textarea name="message" placeholder="Write something to us" cols="40" rows="5" /></textarea>
    </p>

    <p class="submit">
        <input type="submit" name="submit" value="Send" />
        <input type="reset" value="Cancel" />
    </p>

</form>

和你的 index.php

<?php
if(isset($_POST['submit'] == 'Send')) {
    $ToEmail = 'sample@sample.com';
    $EmailSubject = 'Contact Form';
    $mailheader = "From: " . $_POST["email"] . "\r\n";
    $mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
    $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $MESSAGE_BODY = " <strong>Name:</strong> " . $_POST["name"] . "";
    $MESSAGE_BODY .= "<br> <strong>Email:</strong> " . $_POST["email"] . "";
    $MESSAGE_BODY .= "<br> <strong>Telephone:</strong> " . $_POST["telephone"] . "";
    $MESSAGE_BODY .= "<br><br> <strong>Message:</strong> " . nl2br($_POST["message"]) . "";
    $status = mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die("Failure");

}

if($status){
    echo "your success message";
}
 ?>

尝试这个

还有一件事

由于您在 wordpress 上使用它,因此最好使用wordpress 的wp_mail 功能

于 2013-09-13T04:41:33.597 回答
0

听起来die("Failure")可能会启动并记录“失败”消息,而不是在屏幕上打印它。或者邮件模块没有安装,所以它遇到了一个错误,它甚至不知道mail()函数是什么——当然这不太可能。不太确定。

我的猜测是您的服务器甚至还没有设置为正确发送邮件。如果您正在运行自己的服务器,这可能是一个复杂的设置。如果您在共享服务器上,它确实应该已经设置...除非您的主机不是很好。

无论如何,如果您在 WordPress 中运行,我建议您安装Jetpack插件,由制作 WordPress 的人安装。它包括一项功能,只需单击几下光标即可将联系表格添加到页面。

如果该表格不会发送电子邮件,则说明存在超出您在问题中提供的信息范围的错误。

于 2013-09-13T04:33:04.610 回答