3

我在一个页面上有一个联系表格,它将表格的详细信息发送到一个电子邮件地址。你可以在这里查看,www.wonder.ie

表单的 HTML 如下:

<form id="form" name="form27" class="wufoo  page" enctype="multipart/form-data" method="post" action="mailer.php">  
    <ul>
        <li id="foli1">
            <label class="op" id="title1" for="Field1">Name</label>
            <div><input id="Field1" name="name" type="text" class="op required" value="" maxlength="255" tabindex="1" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div>  
        </li>

        <li id="foli2">
        <label class="op" id="title2" for="Field2">Email</label>
            <div><input id="Field2" name="email" type="text" class="op required email" value="" maxlength="255" tabindex="2" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div>
        </li>

        <li id="foli3">
            <label class="op" id="title3" for="Field3">Inquiry</label>
            <div><textarea id="Field3" name="message" class="op required" rows="10" cols="50" tabindex="3" onkeyup="handleInput(this);" onchange="handleInput(this);"></textarea></div>
        </li>
        </ul>  
        <input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" />         
</form>

对于我的 PHP,它是这样的:

<?php
if(isset($_POST['submit'])) {
$to = "AN_EMAIL@ADDRESS.COM";
$subject = "Email from Wonder.ie";
$name_field = $_POST['name'];
$email_field = $_POST['email'];
$message = $_POST['message'];

$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

mail($to, $subject, $body);
} else {
echo "blarg!";
}
?>

一切看起来都正确吗?我知道我的表单名称与 PHP 正确匹配,但我不知道为什么我没有收到你知道的电子邮件 - 仅供参考,该网站上的 PHP 有一个真实的电子邮件地址,而不是 AN_EMAIL@ADDRESS.COM。一旦我点击提交按钮,我就会被带到 mailer.php,但我注意到回显“blarg!” 所以我的猜测是电子邮件没有被发送。

谢谢!

4

9 回答 9

10

你应该改变

if(isset($_POST['submit'])) {

if(isset($_POST['saveForm'])) {
于 2010-02-19T20:30:36.877 回答
2

尝试改变

if(isset($_POST['submit'])) {

if(isset($_POST['saveForm'])) {

这是因为 $_POST 查找表单输入的名称,而不是类型。

于 2010-02-19T20:31:31.973 回答
2

如果以上没有任何帮助,请尝试查看是否可以调试代码。

捕获 PHP mail() 错误并显示合理的用户错误消息

于 2013-08-01T16:14:53.650 回答
0

一些电子邮件服务器不会接受没有适当标头的电子邮件,而您没有提供任何标头。这就是我使用的。

http://us2.php.net/manual/en/function.mail.php

$header = "From: ".$fromText."\r\n";
$header .= "Cc: ".$ccText."\n";
$header .= "Reply-To : ".$fromText."\r\n";
$header .= "Return-Path : ".$fromText."\r\n";
$header .= "X-Mailer: PHP\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
mail($toText, $subjectText, $msgText, $header, '-f'.$fromText);
于 2013-07-20T22:53:34.940 回答
0

在你的 html 中你有

<input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" />

但是当您检查 php 文件时$_POST["submit"],这是不对的。

您需要更改if(isset($_POST['submit']))if(isset($_POST['saveForm']))

if(isset($_POST['submit']))_if(isset($_POST))

于 2013-04-02T08:39:16.173 回答
0

在您的 PHP 代码中,您检查是否$_POST['submit']已设置,但在您的 HTML 代码中,您为提交按钮指定了名称,saveForm因此您应该更改该行

if(isset($_POST['submit'])) {

if(isset($_POST['saveForm'])) {

希望这对你有帮助:)

于 2013-04-02T08:23:31.370 回答
0

您正在使用

if(isset($_POST['submit'])) {

,但是,您已将提交按钮名称保存为saveForm
所以,使用

if(isset($_POST['saveForm'])) {

于 2015-01-25T10:10:43.243 回答
0

你的问题是它倒出来了。肯定是帖子没有到达你的

代码->

mail($to, $subject, $body);

并且提交的名称应更改为

'保存表格'

顺便一提 :)..

刚试过

mail($to, $subject, $body);

在您的 中x.php,将其上传并更改为正确的内容,主题和正文,如果已发送,则邮件功能可以正常工作。

 if(@mail($emailRecipient, $subject, $message, $headers))
    {
      echo "Mail Sent Successfully";
    }else{
      echo "Mail Not Sent";
    }

这也是我在 stackoverflow 中找到的一个很好的代码,用于检查邮件功能是否有效。

于 2013-10-21T10:17:07.187 回答
-1

PHP 中的 HTML 表单邮件发送指南http://top-answers.net/webhost/web-hosting.html

于 2011-12-27T14:32:43.937 回答