Graph APIでOutlookでのメール送信
Microsoft Graph APIを使用してPythonでOutlookのメールを作成し、自動化するには、いくつかのステップが必要です。ここでは、基本的なプロセスを説明します。
【ステップ 1: Azure Portalでアプリを登録する】
/icons/hr.icon
1. <Azure Portalにアクセス>
Azure Portalにログインします。
2. <アプリの登録>
「Microsoft Entra ID (旧:Azure Active Directory)」に移動し、「アプリの登録」で新しいアプリを登録します。
Azure Active Directory は Microsoft Entra ID になりました。
https://gyazo.com/1243cc3f62297e3a5aafe970690390b5
https://gyazo.com/a8753e04556dcd7b093dc852b573c7bd
https://gyazo.com/eb05defcfc012404fe31101e463cb6b4
3. <アプリケーション ID を保存>
登録が完了すると、アプリケーション(クライアント)ID が提供されます。これをメモしておきます。
https://gyazo.com/56cd845976e1847e23ca87a10d9f6096
4. <シークレットを作成>
「証明書とシークレット」セクションで新しいクライアントシークレットを作成し、その値を保存します。
https://gyazo.com/d844cc050460aa6765198165881e9f6f
https://gyazo.com/c4c4148c426b5fd8925e1a60bda24636
シークレットの値を使用します。
初回しかコピーできないので、忘れずにメモをしておきましょう。
https://gyazo.com/115071bee4e8f02690ce6da341a1fc27
5. <APIのアクセス許可>
「APIのアクセス許可」セクションで、「Microsoft Graph」の適切なアクセス許可(例:Mail.ReadWrite)を追加します。
参考:Microsoft GraphAPIを使ってみよう。-事前準備 編- - くらっちのクラウド日記
【ステップ 2: PythonでGraph APIにアクセスする】
/icons/hr.icon
Pythonスクリプトで、以下の手順を実行します:
1. <必要なライブラリのインストール>
pip install requests
2. <アクセストークンを取得>
code:get-access-token.py
import requests
tenant_id = 'YOUR_TENANT_ID'
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'
scope = 'https://graph.microsoft.com/.default'
token_url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token'
token_data = {
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': client_secret,
'scope': scope
}
token_r = requests.post(token_url, data=token_data)
token = token_r.json().get("access_token")
3. <メールを作成して送信>
code:create-and-send-mail.py
send_url = 'https://graph.microsoft.com/v1.0/users/{user_id}/sendMail'
email_headers = {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
}
email_data = {
'message': {
'subject': 'メールの件名',
'body': {
'contentType': 'Text',
'content': 'メールの本文'
},
'toRecipients': [
{
'emailAddress': {
'address': 'recipient@example.com'
}
}
],
'ccRecipients': [
{
'emailAddress': {
'address': 'ccrecipient@example.com'
}
}
]
},
'saveToSentItems': 'true'
}
response = requests.post(send_url, headers=email_headers, json=email_data)
if response.status_code == 202:
print("メール送信成功")
else:
print("メール送信失敗: ", response.text)
このコードは、Microsoft Graph APIを使用してOutlookメールを作成し、送信する基本的な方法を示しています。
{user_id} には、メールを送信するユーザーのIDまたはユーザー名(通常はメールアドレス)を指定します。
また、実際に使用する際は、YOUR_TENANT_ID, YOUR_CLIENT_ID, YOUR_CLIENT_SECRET に、Azure Portalで取得した対応する値を設定する必要があります。
重要な注意点として、これはサーバー側アプリケーション用の認証フロー(クライアント資格情報フロー)を使用しており、ユーザーの操作や同意なしにメールを送信できます。これは企業や組織内での使用に適していますが、個人用途ではあまり適していない点に注意してください。