PHP联系表格不发送

问题描述:

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

该窗体的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 = "[email protected]"; 
$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有一个真实的电子邮件地址,而不是[email protected]。一旦我点击提交按钮,我被带到mailer.php,但我注意到回声“blarg!”所以我的猜测是电子邮件没有被发送。

谢谢!

你应该改变

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

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

这是100%正确的;当你访问$ _POST中的变量时,它们通过表单元素的name属性进行标记。 – Erik 2010-02-19 20:38:36

尝试改变

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

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

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

发送引导你的PHP代码,如果$_POST['submit']设置,但在你的HTML代码,你给了提交按钮saveForm的名字,所以你应该改变行

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

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

希望这有助于你:)

在你的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))

有些电子邮件服务器将不接受没有适当的报头电子邮件,并且没有提供任何。这是我使用的。

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

如果上面没有什么帮助,试试看你能调试代码。

Catching PHP mail() errors and showing reasonable user error message

你的问题是它的倒出来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"; 
    } 

这也是一个很好的代码,我已经在计算器 发现检查邮件功能工作。

您使用

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

,但是,你必须提交按钮的名称保存为saveForm
因此,使用

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