2014-11-04 81 views
0

我有我的网站使用PHP联系表格,但它不能正常工作。当我填写所有领域的正确提交。它显示错误消息“无效的数据”。PHP的邮件功能没有工作

<?php 

$action=$_REQUEST['action']; 
if ($action=="")  
    { 
    ?> 
    <form action="" method="POST" enctype="multipart/form-data"> 
    <input type="hidden" name="action" value="submit"> 
    Your name:<br> 
    <input name="name" type="text" value="" size="30" required/><br> 
    Your email:<br> 
    <input name="email" type="email" value="" size="30" required /><br> 
    Your message:<br> 
    <textarea name="message" rows="7" cols="30" required></textarea><br> <br> 
    <input type="submit" value="Send email" class="topbarbtn"/> 
    </form> 

<?php 
$subject=$_REQUEST['name']; 
$email=$_REQUEST['email']; 
$body=$_REQUEST['message']; 
}else{ 
$to = "[email protected]"; 
$subject = $subject; 
$from = $email; 
$message = $body; 


if (($from=="")||($subject=="")||($message=="")) 
     { 
     echo '<script type="text/javascript">alert("Invalid Details");</script>' ; 
     } else{ 

$headers = "From: " . $from . "\r\n"; 
$body .= $message; 
mail($to, $subject, $body, $headers); 
} 
?> 
+0

可以粘贴输出?你能发送来自shell的邮件吗? – michaelbn 2014-11-04 08:03:28

回答

0

在你的逻辑注意到一个缺陷 - 您尝试从为$电子邮件设置$,而你没有得到在else语句变量$电子邮件

添加此行:

$from = $_REQUEST['email']; 

如果邮件仍然没有发送,请注意,如果使用\ r \ n,某些邮件服务器(如qmail)会拒绝邮件。 因此,您应该尝试仅将\ n或\ n \ n用作标题中的换行符。

0

喜欢这个工作:

<?php 

$action=$_REQUEST['action']; 


if ($action=="") {?> 

    <form action="" method="POST" enctype="multipart/form-data"> 
     <input type="hidden" name="action" value="submit"> 
     Your name:<br> 
     <input name="name" type="text" value="" size="30" required/><br> 
     Your email:<br> 
     <input name="email" type="email" value="" size="30" required /><br> 
     Your message:<br> 
     <textarea name="message" rows="7" cols="30" required></textarea><br> <br> 
     <input type="submit" value="Send email" class="topbarbtn"/> 
    </form> 

<?php 

} 
else { 
    $to = "...mail address..."; 
    $subject = $_REQUEST['name']; 
    $from = $_REQUEST['email']; 
    $message = $_REQUEST['message']; 


    if (($from=="")||($subject=="")||($message=="")) { 
     echo '<script type="text/javascript">alert("Invalid Details");</script>' ; 
    } 
    else{ 
     $headers = "From: " . $from . "\r\n"; 
     $body .= $message; 
     mail($to, $subject, $body, $headers); 
    } 
} 
?>