1

私は MailGun アカウントを持っており、設定した MailGun メール アドレスに送信されたメールの添付ファイルを取得する PHP スクリプトを作成しています。

電子メールがアドレスに送信されると、MailGun は以下の PHP スクリプトに通知を送信し、JSON の完全なメッセージ コンテンツへの URL を送信します。次に、そのメッセージを取得します。それまでは問題なく動作します。完全な JSON メッセージが表示されます。問題は JSON で動作しようとしています。

PHPスクリプトについてこれまでに持っているものは次のとおりです

// Grab contents of message ( Already in JSON format (i think ? ))
$json = file_get_contents($api_url);
$json2 = json_decode($json);

foreach($json2->attachments->url AS $attach) {

    file_put_contents('test.txt', $attach, FILE_APPEND);

}

変数は次を返します($json不要なコードのほとんどを編集しました)。

{
   "attachments":[
      {
         "url":"fullMailGunURLtoAttachment.jpg",
         "content-type":"image/jpeg",
         "name":"logo-lrg.jpg",
         "size":45465
      }
   ],
   "body-html":"<html>\r\n<head>\r\n<style><!--\r\n.hmmessage P\r\n{\r\nmargin:0px;\r\npadding:0px\r\n}\r\nbody.hmmessage\r\n{\r\nfont-size: 12pt;\r\nfont-family:Calibri\r\n}\r\n--></style></head>\r\n<body class='hmmessage'><div dir='ltr'> \t\t \t   \t\t  </div></body>\r\n</html>",
   "Mime-Version":"1.0",
   "Date":"Thu, 19 Sep 2013 18:11:12 +0000",
   "X-Tmn":"[Skvi/kuHvvUw+DlCaQ0136pus9MAs4jm]",
   "Content-Type":"multipart/mixed; boundary=\"_733f5ac1-abe1-41b0-9f42-03a4ae524b70_\"",
   "body-plain":" \t\t \t   \t\t  ",
   "Subject":"66666"
}

最終的には、添付ファイルの URL を取得し、それを別の認証済み要求でローカル ファイル システムに保存するようにコーディングします。認証と呼び出しは問題ではありません。私の問題は、上記の返されたコードを PHP で処理することです。バリエーションを試してみましたが、次のようなエラーが発生しました。

PHP Notice: 非オブジェクトのプロパティを取得しようとしています

PHP 警告: foreach() に無効な引数が指定されました

$json->attachmentsではなくループで使用しようとしたとき$json2->attachments

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

2

あなたは近かった。JSON オブジェクトでは、URL はもう 1 レベル深いです。以下のようにアクセスする必要があります。

foreach ($json2->attachments as $value) {
    echo $value->url;
}

デモ!

于 2013-09-19T19:17:10.190 に答える