使用json_decode检索ajax发送的电子邮件javascript数组

时间:2013-06-05 10:15:19

标签: php javascript ajax json

我正在尝试通过使用JSON.stringify进行编码来发送JS数组的内容,然后在PHP中进行解码,然后通过电子邮件发送。我得到一个成功警告,数据发送到PHP好,但电子邮件没有通过。任何人都可以发现任何明显的遗漏我错过/出错了吗?

已经通过 .push 函数填充了数组,我可以在HTML中输出那么好,所以我知道它已填充。

使用ajax对我的数据字符串进行编码:

dataString = myArray; 

var jsonString = JSON.stringify(dataString);

 $.ajax({
    type: "POST",
    url: "script.php",
    data: {data : jsonString}, 
    cache: false,

    success: function(){
       alert("Success");
    }
});

然后在PHP:

<?php
$data = json_decode(stripslashes($_POST['data']));

$to = "my@email.com";
$header = "Content-Type: text/html\r\nReply-To";
$subject = "This is my Subject Line";

$body = 
    @"
    <strong>The data is:</strong> $data
    ";


    if(mail($to, $subject, $body, $header)) {
        die("true");    
        } else {
            die("There was an error sending the email.");   
        }
?>

电子邮件根本没有通过,我根本没有收到任何错误消息。请帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:0)

首先,你不能直接将$ data数组转换为字符串。

您必须使用print_r($ data,true)将数组内容插入字符串

答案 1 :(得分:0)

你在PHP机器上有邮件服务器吗?

如果邮件被接受发送,

mail()将返回true,但这并不意味着它已被发送。

答案 2 :(得分:0)

可能你没有邮件服务器。

您可以快速做的是,转到此链接,

http://www.toolheap.com/test-mail-server-tool/

下载该工具。按照步骤运行它。

然后将您的代码更改为此以查看您可以执行的操作,

<?php
$data = json_decode(stripslashes($_POST['data']));

$to = "abc@gmail.com";
$header = "Content-Type: text/html\r\nReply-To";
$subject = "This is my Subject Line";

$body = 
@"
<strong>The data is:</strong> 
".print_r($data, true) ;


if(mail($to, $subject, $body, $header)) {
    die("true");    
    } else {
        die("There was an error sending the email.");   
    }
?>

我认为你会得到价值,但你将如何使用它,这是你的选择。

干杯。