无法让我的PHP表单工作(无法发送电子邮件)

时间:2012-08-09 13:39:42

标签: php contact contact-form

与我在一起,我真的很糟糕PHP,而不是我的领域。对不起我可能会说的任何愚蠢的东西

编辑:我试图像你们所说的那样回应变量,然后出来我无法从中得到任何价值。

EDIT2:那些“需要的类”适用于我的jquery验证脚本。你们认为我也应该发布它?

好吧,我面临一个php联系表单问题。我也不太了解PHP,所以这会让事情变得更难。

好吧,我已经尝试过mailtest.php来检查它是否是我的主机,但它运行正常。所以这是代码:

<form class="validate" method="post" action="send_form_email.php">

    <span class="fill">Todos os campos são obrigatórios.</span>
    <span><label>Nome:</label><input name="nome" type="text" class="required" /></span><br />
    <span><label>E-mail:</label><input name="mail" type="text" class="required email" /></span><br />
    <span><label>Empresa:</label><input name="empresa" type="text" class="required" /></span><br />
    <span><label>Telefone:</label><input style="width: 150px;" name="phone" type="text" class="required" /></span><br />                   
    <span><label>Mensagem:</label><textarea name="mensagem" cols="38" rows="8" class="required"></textarea></span><br />
    <span><input class="btn" type="submit" name="submit" value="Enviar" /></span>

</form>

这是我的PHP编码:

<?php
if(isset($_POST['submit'])) {

$to = "fernando_fleury@hotmail.com";
$subject = "Contato Website - Nicotec";
$name = $_POST['nome'];
$email = $_POST['mail'];
$empresa = $_POST['empresa'];
$phone = $_POST['phone'];
$message = $_POST['mensagem'];

$body = "De: $name_field\n E-Mail: $email\n Empresa: $empresa\n Telefone: $phone\n Mensagem:\n $message";

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

header('Location: contato.html');

?>

也可以现场查看:http://www.fernandofleury.com.br/preview/nicotec/contato.html

我在这里做错了什么?提前谢谢。

3 个答案:

答案 0 :(得分:1)

而不是if(isset($_POST['submit']))检查以确保所有必填字段都设置为if(isset($_POST['nome']) && isset($_POST['mail']) && isset($_POST['phone']) ....

的行

如果失败,请回显$to$subject$body。在测试时注释掉header以查看结果。

另外,试试这个:

if(isset($_POST['submit'])) 
{
    $to = "fernando_fleury@hotmail.com";
    $subject = "Contato Website - Nicotec";
    $name = $_POST['nome'];
    $email = $_POST['mail'];
    $empresa = $_POST['empresa'];
    $phone = $_POST['phone'];
    $message = $_POST['mensagem'];

    $body = "De: $name_field\n E-Mail: $email\n Empresa: $empresa\n Telefone: $phone\n Mensagem:\n $message";

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

    header('Location: contato.html');
}
else
{
    echo "Ruh ohes! Something wasn't set!";
}

编辑:向屏幕使用回显一个var(在$to示例中这段代码:

echo $to;

编辑2:

我看了一下你的页面,你使用javascript来确保填写所有字段。因此,问题几乎肯定在于这一行:

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

可以将其更改为:

if(!empty($_POST['nome']) && !empty($_POST['mail']) && !empty($_POST['empresa']) && !empty($_POST['phone']) && !empty($_POST['mensagem']))
请帮我吗?也许$_POST['Submit']未正确发送。

答案 1 :(得分:1)

问题尚不清楚。 “它不起作用”是一个非常广泛的解释:)所以为了获得适当的帮助,请描述以下内容:

  • 你采取什么行动?
  • 你得到了什么结果?
  • 预期结果是什么?

另外:尝试将过程分成几块:

  • 邮件能正常工作吗?
  • 只是重定向吗?
  • 是两个吗?
  • 等...

不是解决方案,而是调试提示:
尝试:

 print_r($_POST);

看看结果如何。它可能会告诉你更多。

答案 2 :(得分:1)

在进行测试以查看错误时,还应将以下内容添加到php文件的顶部:

error_reporting(E_ALL);
ini_set('display_errors','On');

并在所有输入中添加内容:

value=""

默认发送空字符串。 要查看即将发布的内容,请添加到您的send_form_email.php

var_dump($_POST)

因为你不需要写if(isset($ _ POST ['nome'])&amp;&amp; isset($ _ POST ['mail'])等。有时提交输入名称会被PHP更改,所以你可以使用var_dump找到正确的名字。