GmailからメールのID一覧を取得

kato770 45views 更新:2016年10月27日

Getmail.php

<?php
$headers = array(
   "Authorization: Bearer {APIから取得したトークン}"
    );

$url = "https://www.googleapis.com/gmail/v1/users/me/messages/" . $argv[1];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);

$html =  curl_exec($ch);
$html = mb_convert_encoding($html,"UTF-8","EUC-JP");
print_r($html);
curl_close($ch);
?>

引数無しで実行するとメールボックスの各メールのID一覧を取得し、引数にIDを入れるとそのメールのjson形式での情報を取得することができます。

ID一覧の記述はこのようになっています。

{
 "messages": [
  {
   "id": "********",
   "threadId": "********"
  },
  {
   "id": "********",
   "threadId": "********"
  },
          ・
          ・
          ・
  {
   "id": "*********",
   "threadId": "*********"
  }
],
 "nextPageToken": "********",
 "resultSizeEstimate": ********
}

これをテキストにし、処理しやすいようにPHPの配列に直します。

  $json_string = file_get_contents(MAIL_ID_LIST);
  $json = json_decode($json_string);

僕の場合、Subjectを取ってくるところまでで一旦目標にしていましたので、先程のGetmail.phpを関数に入れて、

  function GetSubject($id){
    $output = GetMail($id);
    $json_out = json_decode($output);
    $result = $json_out->payload->headers;
    echo "$result->value\n";
    foreach($result as $key => $value){
      if(strpos($value->name, "Subject") !== false){
          echo "ここがSubjectです";
      }
    }
  }

というふうにまとまりました(まとまってない) まだ改良を続けると思います。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません