PHP联系表单未发送

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!" 的回显,所以我的猜测是电子邮件没有被发送。

谢谢!

9个回答

10

您应该进行更改

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

这是百分之百正确的;当您访问 $_POST 中的变量时,它们是通过表单元素的 name 属性进行标记的。 - Erik

2
尝试更改。
if(isset($_POST['submit'])) {

为了

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

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

2

0

你的问题是它泄漏了 blarg。 肯定是帖子没有到达你的

代码->

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

提交按钮的名称应该更改为

'saveForm'

顺便说一下 :)..

刚试过了

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

在你的 x.php 文件中,上传它并将主题和正文更改为正确的内容,如果发送成功,则邮件函数就可以正常工作。
 if(@mail($emailRecipient, $subject, $message, $headers))
    {
      echo "Mail Sent Successfully";
    }else{
      echo "Mail Not Sent";
    }

这也是我在stackoverflow找到的一个好代码,用来检查邮件函数是否工作。


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);

0

您正在使用:

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

但是,您已将提交按钮名称保存为saveForm
因此,请使用

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


0
在你的 PHP 代码中,你检查 $_POST['submit'] 是否设置,但在你的 HTML 代码中,你给提交按钮命名为 saveForm,所以你应该更改这一行。
if(isset($_POST['submit'])) {

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

希望这对你有所帮助 :)

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))


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接