Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sendgrid:使用webhooks(php api)获取反弹状态代码_Php_Html_Rest_Email_Sendgrid - Fatal编程技术网

Sendgrid:使用webhooks(php api)获取反弹状态代码

Sendgrid:使用webhooks(php api)获取反弹状态代码,php,html,rest,email,sendgrid,Php,Html,Rest,Email,Sendgrid,我使用Sendgrid发送电子邮件。电子邮件是使用他们的web API发送的,我使用一个端点来获取每个电子邮件事件 以下是此端点的代码(在发送电子邮件后,每次事件发生时都会调用Sendgrid) 我想获得每个事件的状态代码(例如:5.1.1的反弹) 以下是我到目前为止所做的尝试: $data = file_get_contents("php://input"); $events = json_decode($data, true); foreach ($events as $event) {

我使用Sendgrid发送电子邮件。电子邮件是使用他们的web API发送的,我使用一个端点来获取每个电子邮件事件

以下是此端点的代码(在发送电子邮件后,每次事件发生时都会调用Sendgrid)

我想获得每个事件的状态代码(例如:5.1.1的反弹)

以下是我到目前为止所做的尝试:

$data = file_get_contents("php://input");
$events = json_decode($data, true);

foreach ($events as $event) {
   $sg_message_id = $event['sg_message_id']; //OKAY
   $event =         $event['event'];         //OKAY (eg : "bounce")
   $status =        $event['status'];        //NOT OKAY ("undefined index")

   //and if I try :
   $status = $event['event']['status']; //I get the first letter of the event (eg : "b" for bounce)
}
文档(这里:,Bounce部分)说有一个字段“status”(例如:5.1.1),我不明白为什么它不起作用


有什么想法吗?

我理解这个问题:

$data = file_get_contents("php://input");
$events = json_decode($data, true);

foreach ($events as $event) {
   $sg_message_id = $event['sg_message_id']; //OKAY
   $event =         $event['event'];         //OKAY (eg : "bounce")
   $status =        $event['status'];        //NOT OKAY ("undefined index")

   //and if I try :
   $status = $event['event']['status']; //I get the first letter of the event (eg : "b" for bounce)
}
我试图用一封假用户电子邮件模拟跳出错误,比如

user@gmail1.com

但是Sendgrid没有处理电子邮件(无法访问主机),并返回了一个“已删除”事件

相反,如果我发送电子邮件至:

另一个用户-unknow@gmail.com


然后sendgrid返回一个进程事件,然后返回一个反弹事件,反弹状态代码为:)

输出
$event
你有什么?@chris85$event是一个对象,脚本只有在事件发生时才被调用,是否可以保存它的内容?
$event
应该是一个数组,不是<代码>打印($event)是否存在状态?@chris85 yes$事件是一个数组,错误日志显示“状态”不存在,但上面的文档说我们可以访问更多信息,但我无法打印,因为只有sendgrid通过发布数据来调用此页,是否可以将此数组存储在数据库中?@chris85我终于明白了问题所在(我把答案贴在下面),无论如何谢谢克里斯!