2012-12-01 44 views
0

我试图发送使用Ajax和jQuery但即使Ajax请求获得成功,则不会发送电子邮件中的电子邮件的电子邮件。电子邮件系统适用于其他的东西而不是回复系统,我做的...我的代码如下:发送用ajax和jQuery

var message = $('#message').val(); 
var dataString = 'message=' + message ; 
$.ajax({ 
    type: "POST", 
    url: "reply.php", 
    data: dataString, 
    cache: false, 
    success: function(html) 
    { 
     // success function 
    } 
}); 

Ajax调用成为成功和成功的函数被调用,但邮件没有发送。 。php代码如下

$title = "something"; 
$message = $_POST['message']; 
$email = [email protected] 
mail($email, "Reply to \"".$title."\"", $message, 
"From: \"Ad reply\" <[email protected]$host>\r\n" . 
"X-Mailer: PHP/" . phpversion()); 

和我已经完成了...... if(isset($_POST))的事情。

+0

你有没有尝试发送电子邮件,而不阿贾克斯部分第一?确保您对mail()函数的调用按预期工作! – koopajah

+0

您对'$ email'的分配缺少引号。在真实的代码中它是否正确?正确编码URL,是你的Javascript'message'(我推荐使用的地图,而不是用'$ .ajax'一个字符串,所以jQuery将照顾这一点)? – Barmar

回答

0

您的代码并不显示其中$主机设置。可能是造成它的格式不正确的“来自”地址?

在另一个不是,它是不交的数据直接从形式发送到电子邮件是一个好主意,你应该通过一些过滤器首先运行,以确保没有讨厌的代码可以在电子邮件中结束。

+0

它是通过过滤器过去了,没那么蠢。我只是没有写出来。 n @host在那里设置,但它不会像上面的字符串那样起作用 – user1223654

0

试试这个代码可以肯定这将工作 -


PHP代码:

if(isset($_GET['email'])){ 

$email = $_GET['email']; 
$message = $_GET['msg']; 

$to = "[email protected]"; 
$subject = "Demo email"; 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From:' .$email. "\r\n";    
mail($to, $subject, $message, $headers); 
echo'success'; 
} 
else{ echo'error'; } 


AJAX/jQuery脚本:

email = $("#email").val(); 
msg = $("#msg").val(); 
$.ajax({ 
    url: 'ajxContact.php?email='+email+'&msg='+msg, 
    cache: false, 
    success: function(html){ 
    if(html == 'error'){ 
     alert("An error occurer and the message can't be sent."); 
     } 
    else { 
     alert('Email has been successfully sent.'); 
     } 
    } 
});