18
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-20

目的

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

18
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?