2015-01-20 118 views
1

我在以下PHP文件中找不到我的错误。我想有一个错误在POST或提交操作:PHP邮件功能不起作用

<?php 

// Initialize all variables 
$name = $email = $betreff = $message = $tel = ""; 
$destination = '[email protected]'; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (!empty($_POST["name"])){ 
     $name = $_POST["name"]; 
    } 

    if (!empty($_POST["email"])) { 
     $email = $_POST["email"]; 
    } 

    if (!empty($_POST["message"])){ 
     $message = $_POST["message"]; 
    } 

    if (!empty($_POST["subject"])) { 
     $subject = $_POST["subject"]; 
    } 

    if (!empty($_POST["tel"])) { 
     $tel = $_POST["tel"]; 
    } 

} 

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

    if ($_POST['name'] && $_POST['email'] && $_POST['message'] !=""){ 
     mail($destination, $subject, $message."\n \n \n Phone#:".$tel, "From: ".$name."<".$email.">"); 
     $mailSent = TRUE; 
    } 

} 

if ($mailSent == TRUE){ 
     echo "Thank you!" ; 
    } 

?> 

相应的HTML代码:

<form method="post" action=""> 

Name:*</br> 
<input name="name" type="text" size="50" maxlength="60" value="<?php echo htmlspecialchars($name);?>"></br> 

E-Mail:*</br> 
<input name="email" type="text" size="50" maxlength="40" value="<?php echo htmlspecialchars($email);?>"></br> 

Phone #:</br> 
<input name="tel" type="text" size="50" maxlength="15" value="<?php echo htmlspecialchars($tel);?>"></br> 

Subject:</br> 
<input name="subject" type="text" size="50" maxlength="50" value="<?php echo htmlspecialchars($subject);?>"></br> 

Message:*</br> 
<textarea name="message" cols="50" rows="10" wrap="virtual"><?php echo htmlspecialchars($message);?></textarea></br> 

<input type="submit" value="Send"> 

<submit> 
</form> 

我试了好几次,但我从来没有收到一封电子邮件......有什么建议?

+0

运行'mailq'来找出sendmail守护进程正在处理的消息。 – amphetamachine 2015-01-20 22:44:48

回答

4

邮件是依靠你的条件语句if (isset($_POST['submit']))

所以给你的提交按钮相同的name属性。

<input type="submit" value="Send" name="submit"> 

该条件语句中的所有内容都未被执行。

曾使用错误报告,会抛出未定义指数提交...

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

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

// rest of your code 

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


我也注意到一个流浪的<submit>标签;你可以删除它。

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

POST数组是什么样子的?上面的线看起来应该是

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