2012-01-07 139 views
0

我在使用PHP创建联系表单时遇到了无穷无尽的麻烦。PHP邮件功能无法正常工作

我首先尝试了写入数据的方法(如问题中所述:HTML Form Not Outputting To CSV File (Or Displaying Correct Error Messages)),现在我只是尝试将自己的电子邮件中的信息发送给自己的方法。

这里是我的jsfiddle:

http://jsfiddle.net/tqs6g/1/

下面是我写的发送信息给自己的PHP(我知道这是不是很优雅的编码,但我只是想要得到的东西先工作,然后我打算用阵列等):

我在这个例子中使用
<?php 

if (isset($_POST['brandname']) && isset($_POST['firstname']) && isset($_POST['lastname']) && isset($_POST['email']) && isset($_POST['website'])){ 
    $brandname = $_POST['brandname']; 
    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $email = $_POST['email']; 
    $website = $_POST['website']; 

    if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email)){ 
     $to = '[email protected]'; 
     $subject = 'Submission Form'; 
     $body = $firstname; 
     $headers = 'From: '.$email; 

     if (@mail($to, $subject, $body, $headers)){ 
      echo 'Yeah yeah'; 
      }else{ 
       echo 'yeah no.'; 
       } 

     }else{ 
     echo 'Please fill out all required fields.'; 
     } 

    } 
?> 

电子邮件显然不是我的电子邮件(我用我的代码我真实的)。基本上会发生什么是我填写表单并点击提交,它重新加载form.php页面。我检查了我的电子邮件,并没有发生任何事情。如果我查看网站的源代码,请选择“是的”。显示在代码中(当它成功发送电子邮件时,它从哪里回应)。所以代码似乎正常运行,但它不输出任何东西。

我是否必须通过本地主机设置一些邮件服务器/功能?

我错过了什么?

+0

如果您在本地工作(例如使用XAMPP),则需要在'php.ini'中设置sendmail的路径以发送电子邮件。这可能会有所帮助:http://www.codingforums.com/archive/index.php/t-77553.html – Quasdunk 2012-01-07 19:34:56

+0

您可以将错误转为警告或检查日志吗? – mat 2012-01-07 19:36:32

+0

我的php.ini已经有:[邮件功能] ;仅适用于Win32。 SMTP = localhost smtp_port = 25。这是我应该看的线? – MillerMedia 2012-01-07 19:38:45

回答

0

你不需要在你的服务器上设置任何东西,它对我来说工作正常。

尝试用mail代替@mailmail(...)总是适合我。

+1

[''''运算符'](http://thesmithfam.org/blog/2006/05/07/php-the-operator/)可以抑制错误消息。 '@ mail'和'mail'调用相同的功能。 – Alex 2012-01-07 19:27:46

+0

@H贝拉米我试过了,但它没有改变任何东西。 – MillerMedia 2012-01-07 19:40:16