2016-03-14 3 views
1

Я нашел много потоков о Mailgun JSon ответа здесь, но никто не отвечает на мой вопросPHP разбор Mailgun Webhook сообщения-заголовки

Mailgun возвращает эту строку как часть запроса webhook POST: [["Received", "by luna.mailgun.net with SMTP mgrt 8734663311733; Fri, 03 May 2013 18:26:27 +0000"], ["Content-Type", ["multipart/alternative", {"boundary": "eb663d73ae0a4d6c9153cc0aec8b7520"}]], ["Mime-Version", "1.0"], ["Subject", "Test bounces webhook"], ["From", "Bob <[email protected]>"], ["To", "Alice <[email protected]>"], ["Message-Id", "<[email protected]>"], ["List-Unsubscribe", "<mailto:u+na6tmy3ege4tgnldmyytqojqmfsdembyme3tmy3cha4wcndbgaydqyrgoi6wszdpovrhi5dinfzw63tfmv4gs43uo[email protected]>"], ["X-Mailgun-Sid", "WyIwNzI5MCIsICJhbGljZUBleGFtcGxlLmNvbSIsICI2Il0="], ["X-Mailgun-Variables", "{"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}"], ["Date", "Fri, 03 May 2013 18:26:27 +0000"], ["Sender", "[email protected]"]]

Вопрос заключается в том, как анализировать его с помощью PHP? json_decode возврат null. Мне нужно получить тему из этой строки. Благодаря

Это полный ответ я получаю:

[ 
attachment-count => 1, 
code => 550, 
domain => "domain.com", 
error => "5.1.1 The email account that you tried to reach does not exist. Please try5.1.1 double-checking the recipient's email address for typos or5.1.1 unnecessary spaces. Learn more at5.1.1 http://support.example.com/mail/bin/answer.py", 
event => "bounced", 
message-headers => "[["Received", "by luna.mailgun.net with SMTP mgrt 8734663311733; Fri, 03 May 2013 18:26:27 +0000"], ["Content-Type", ["multipart/alternative", {"boundary": "eb663d73ae0a4d6c9153cc0aec8b7520"}]], ["Mime-Version", "1.0"], ["Subject", "Test bounces webhook"], ["From", "Bob <[email protected]>"], ["To", "Alice <[email protected]>"], ["Message-Id", "<[email protected]>"], ["List-Unsubscribe", "<mailto:u+na6tmy3ege4tgnldmyytqojqmfsdembyme3tmy3cha4wcndbgaydqyrgoi6wsz[email protected]lidskasila.cz>"], ["X-Mailgun-Sid", "WyIwNzI5MCIsICJhbGljZUBleGFtcGxlLmNvbSIsICI2Il0="], ["X-Mailgun-Variables", "{"my_var_1": "Mailgun Variable #1", "my-var-2": "awesome"}"], ["Date", "Fri, 03 May 2013 18:26:27 +0000"], ["Sender", "[email protected]"]]", 
Message-Id => "<[email protected]>", 
recipient => "[email protected]", 
signature => "0359cb85c5b22e8de04232f74a77b94d41dc539e0c64034f6787562648bf638c", 
timestamp => 1457955019, 
token => "cd5808bd17b3523cbbd18426841cec0e0c897d4c325d2c9621", 
X-Mailgun-Sid => "WyIwNzI5MCIsICJhbGljZUBleGFtcGxlLmNvbSIsICI2Il0=" 
] 
+0

Это полный ответ или его часть? Можете ли вы показать 'var_dump()' вывод запроса? – avip

+0

Несомненно. Прикрепленный. – simPod

+0

Если вы получили ошибку при декодировании JSON, узнайте почему (http://php.net/json_last_error). Но '' {"my_var_1": «Mailgun Variable # 1» 'совсем не похож на действительный JSON ... –

ответ

1

Дело в том, что message-headers переменная имеет правильный формат JSON. Что касается Mailgun - порядок хранения заголовков. Так что это код для значения предмета:

$tmp = $_POST['message-headers']; 
$data = json_decode($tmp); 
$subject = $data[3][1]; 
Смежные вопросы