2014-11-04 75 views
-1

我正在做一个邮件的形式与PHP和我有这样的事情:PHP邮件不是为我工作

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $to = '[email protected]'; 
    $subject = 'Test mail'; 
    $body = "From: $nombre\n E-Mail: $email"; 

    if ($_POST['submit']){ 
     mail ($to, $subject, $body); 
     header("Location: http://www.example.com/"); 
    } 
?> 

正如你所看到的代码是非常简单的,它只是发送一个名字和ADRESS但它不起作用。每当我尝试发送它时,页面只会将标题更改为“mypage/send.php”,就这些了。

它甚至不会将我重定向到示例页面。

我已经试过:

  • 使用头文件(从这里推荐他人)。
  • 检查是否有语法错误。
  • 使用SMPT在真实页面和localhost中对其进行测试。

编辑:使用HTML:

<form method="post" action="send.php"> 
    <input type="text" name="name" placeholder="Your name"> 
    <input type="email" name="email" placeholder="Email"> 
    <input type="submit" value="send"> 
</form> 
+0

在脚本的开始将这个'的ini_set ( 'display_startup_errors',1);函数ini_set( '的display_errors',1); error_reporting(-1);' – castis 2014-11-04 23:55:39

+0

介意你,这不会消除你的问题,但它会告诉你它们是什么。 – castis 2014-11-05 00:02:07

回答

0

您应该检查的$_POST["submit"]var_dump值和mail返回值(这是布尔值)。

Obs .:过滤来自$_GET$_POST的所有输入是一个很好的实践。

1

首先,您没有一个名为$nombre的分配变量,因此具有错误报告集会引发未定义的变量警告;您可能打算使用$name来代替。

检查您的垃圾邮件,因为您的邮件头中没有正确的From:,并且/或者由于这个原因电子邮件被完全拒绝,这是当今常见的事情。

检查您的所有表单元素是否确实被命名,这包括您的提交按钮,因为您的条件语句取决于此,并且您没有提供HTML表单。

I.e .: name="name"name="email"以及提交按钮name="submit"

它也更好地使用isset()。即:

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

,而不是if ($_POST['submit'])

有关邮件/头的详细信息,请访问:

来自实例PHP.net:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

添加error reporting到您的文件(S),这将有助于发现错误或者顶部。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁注:错误报告只应在分期完成,并且从不生产。

有关邮件/头的详细信息,请访问:

来自实例PHP.net:

<?php 
$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 
?> 

几件事注意 是:

  • PHP是否已安装在您的服务器上并正确配置?
  • 邮件是否安装并正确配置?
  • 如果从您自己的计算机运行,则上述所有条件均适用。

“这只是发送一个名称和ADRESS,但它不工作”

  • 您将需要与此更精确。 “它不起作用”并没有定义也没有描述它是如何工作的,或者你可能得到的任何错误信息。

如果不是重定向,那么你可能会在header之前输出另一个常见的错误,这是错误报告会捕获的东西,请使用它。

这里是关于头部之前输出上堆栈的文章(头已经发送),你应该得到的是警告:

+0

对不起'nombre'。我是阿根廷人,我用西班牙语制作代码,我习惯用西班牙文声明变量。另一方面,改变它,并正确地把'名称'不起作用。我试过issets,并没有工作:( – 2014-11-05 00:48:22

+0

@NicoPavlotsky没有问题,我明白了。你有没有考虑我的整个答案,包括错误报告你的PHP文件的顶部,通过检查清单等?也很高兴看到你的HTML表单。 – 2014-11-05 00:49:47

+0

好吧,等待5分钟,我会将HTML添加到问题中。东西,是的,我查了很多次,但没有解决问题,现在的问题是:如果我添加该行进行调试,那么报告出现在哪里? – 2014-11-05 00:52:10