Edited at

PythonのO365パッケージでメール一覧を取得する


目的

Microsoft GraphおよびOffice 365 APIと対話するためのシンプルなPythonライブラリ

python-o365 A simple python library to interact with Microsoft Graph and Office 365 API.

を使ってメール一覧を取得してみます。


実践

README.mdそのままです。


インストール

pip install O365


アプリケーションの登録



  • Azure App Registrationsへアクセス



    • +新規登録をクリック


      • 名前 mail_receive任意で入力


      • 任意の組織のディレクトリ内のアカウントと、個人用の Microsoft アカウント (Skype、Xbox、Outlook.com など)を選択

      • リダイレクト URI ドロップダウンリスト「Web」のまま


      • https://login.microsoftonline.com/common/oauth2/nativeclientを入力

      • 登録をクリック(画面遷移が失敗することもあるけれど無視)

      • アプリの登録(プレビュー)をクリックしてトップに戻る



    • 表示名mail_receiveをクリック


      • アプリケーション (クライアント) IDをコピーしてどこかにメモ



    • 証明書とシークレットをクリック


      • +新しいクライアントシークレットをクリック

      • 説明をnever(任意)と書いて有効期限なしを選択して追加をクリック

      • 作ったクライアントシークレットをコピーしてどこかにメモ(ここのコピー忘れたら作り直し)




    • APIのアクセス許可をクリック



      • +アクセス許可の追加をクリック



        • Microsoft Graphをクリック



          • 委任されたアクセス許可をクリック


          • Mail.ReadWrite,Mail.Send,User.Read,offline_accessにチェックを入れてアクセス許可の追加をクリック










アプリケーションの認証


myauth.py

from O365 import Account

credentials = ('<メモした上記アプリケーション(クライアント)ID>', '<メモしたクライアントシークレット>')
account = Account(credentials)
account.authenticate(scopes=['basic', 'message_all'])

$ python3.6 -m venv venv

$ source venv/bin/activate
(venv) $ pip install O365
(venv) $ python myauth.py
Visit the following url to give consent:
<URLが出てくるのでここにブラウザでアクセス>
Paste the authenticated url here:


  • アカウントをクリック、承諾をクリック

  • 空っぽのページが表示されるので、ブラウザのアドレスバーに表示されているURLをコピー


  • Paste the authenticated url here:のところにURLを貼り付けてEnter

Paste the authenticated url here:<ブラウザのアドレスバーに表示されているURL貼り付け>



  • Authentication Flow Completed. Oauth Access Token Stored. You can now use the API.と表示されれば成功


アプリケーション実行


app.py

from O365 import Account

credentials = ('<メモした上記アプリケーション(クライアント)ID>', '<メモしたクライアントシークレット>')
account = Account(credentials)

mailbox = account.mailbox()
inbox = mailbox.inbox_folder()
for message in inbox.get_messages(limit=5):
print(message)


$ python app.pl

Subject: 適当なメール1
Subject: 適当なメール2
Subject: 適当なメール3
Subject: 適当なメール4
Subject: 適当なメール5

以上 \e