環境
OS: Windows 10
python: 3.7.5
python: 3.7.5
APIの設定方法などは別途説明予定です。
APIの準備ができているという前提でpythonのプログラム部分について説明します。 といってもコメント欄でほぼ説明しているのでコードのアップのみになります。
googleのdevelopersに紹介されていたpythonのクイックスタートを参考にして作成しました。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90  | 
						from __future__ import print_function import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError import sys import pprint import email import datetime ##################################################################################### # # gmail api を利用したメール一覧(タイトル・送信元)の取得 # 「https://developers.google.com/gmail/api/quickstart/python」(英文)を参考に作成 # ##################################################################################### # スコープの指定(読み込みのみ) #「https://developers.google.com/gmail/api/auth/scopes」(英文)参照 SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'] def main():     # 当ファイル(quickstart.py)と同じフォルダにある「credentials.json」を参照     # 「token.json」を作成、更新する(プログラムで自動取得・自動更新)     # 「credentials.json」はGoogle CluodのOAuthクライアントIDを作成してダウンロードしたものをリネームして配置する     token_file       = os.path.dirname(os.path.abspath(sys.argv[0])) + "/token.json"     credentials_file = os.path.dirname(os.path.abspath(sys.argv[0])) + "/credentials.json"     creds = None     # token.json(ユーザーのアクセス/更新トークン)の存在チェック     if os.path.exists(token_file):         creds = Credentials.from_authorized_user_file( token_file, SCOPES)     # token.json(認証情報)が存在しない、認証情報が古い場合は更新する     if not creds or not creds.valid:         if creds and creds.expired and creds.refresh_token:             # トークンの更新             creds.refresh(Request())         else:             # ファイル(トークン)が無い場合             flow = InstalledAppFlow.from_client_secrets_file( credentials_file, SCOPES)             creds = flow.run_local_server(port=0)         # 更新したトークンを保存する         with open( token_file, 'w') as token:             token.write(creds.to_json())     try:         # Gmail API の呼び出し(googleライブラリ使用)         # 「https://github.com/googleapis/google-api-python-client」(github)参照         service = build('gmail', 'v1', credentials=creds)         # メール一覧の取得         # 「https://developers.google.com/gmail/api/reference/rest/v1/users.messages/list」(英文)を参照         # maxResults: 取得件数         # q: https://support.google.com/mail/answer/7190?hl=ja」を参照         messages = service.users().messages().list(userId='me', maxResults=10, q='').execute()         # 取得したメッセージIDからメールの詳細データの取得         mail_data = {}          for msg in messages['messages']:             mail_ret = service.users().messages().get(userId="me", id=msg["id"]).execute()             for header_data in mail_ret['payload']['headers']:                 # 受信日(表記を統一させるためにひと手間必要)                 if header_data["name"] == "Date":                     mail_data["Date"] = str( datetime.datetime.fromtimestamp( email.utils.mktime_tz( email.utils.parsedate_tz( header_data["value"] ) ) ) )                 # メールタイトルの取得                 if header_data["name"] == "Subject":                     mail_data["subject"] =  header_data["value"]                 # 送信元アドレスの取得                 if header_data["name"] == "From":                     mail_data["From"] =  header_data["value"]             # メール情報の表示             print("-----------------------------------")             pprint.pprint(mail_data)             print("-----------------------------------")     except HttpError as error:         print(f'An error occurred: {error}') if __name__ == '__main__':     main()  |