検疫されたメールを確認したら、Mail Admin Quarantine API を使用してトリアージの決定を記録します。
- メールを解放して受信者に配信します。受信メールの場合、Gmail は受信者のメールボックスにメールを配信します。送信メールの場合は、Gmail が送信します。
- メールを拒否します。Gmail はメールを破棄し、配信しません。
このページでは、1 つのメールを解放または拒否する方法について説明します。複数のメールを一度に処理するには、メールを一括で解放または拒否するをご覧ください。
前提条件
- API を設定するの手順を完了している。
- 管理者検疫権限を持つ管理者の権限を借用し、
https://www.googleapis.com/auth/gmail.admin.quarantineスコープを含むアクセス トークン。読み取り専用スコープでは不十分です。ドメイン全体の委任で承認するをご覧ください。 PENDING_TRIAGE状態の検疫済みメッセージのリソース名。検疫済みメッセージの一覧表示と検索から取得します。
メッセージをリリースする
メッセージを解放するには、空の JSON 本文を含むメッセージのリソース名で、customers.quarantinedMessages リソースの :release カスタム メソッドに POST リクエストを送信します。
POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages/MESSAGE_OWNER:MESSAGE_ID:release
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{}
レスポンスには、message フィールドに更新されたメッセージが含まれ、state が RELEASED に設定されています。
{
"message": {
"name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
"messageId": "18d3ef45a8b2c1d0",
"messageOwner": "user@example.com",
"state": "RELEASED"
}
}
メッセージを拒否する
メッセージを拒否するには、空の JSON 本文を含むメッセージのリソース名で、customers.quarantinedMessages リソースの :deny カスタム メソッドに POST リクエストを送信します。
POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages/MESSAGE_OWNER:MESSAGE_ID:deny
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{}
レスポンスの message フィールドには、更新されたメッセージが含まれます。state は DENIED に設定されています。
{
"message": {
"name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
"messageId": "18d3ef45a8b2c1d0",
"messageOwner": "user@example.com",
"state": "DENIED"
}
}
例: 保留中のメッセージをトリアージする
次の Python の例では、トリアージ待ちのメールを検索し、各メールの件名を検査して、サンプルルールに基づいてメールをリリースまたは拒否します。ルールを独自のトリアージ ロジックに置き換えます。
import requests
BASE_URL = 'https://mailadminquarantine.googleapis.com/v1'
CUSTOMER_ID = '01abc23de' # Your customer ID without the leading 'C'.
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json',
}
# 1. Search for messages pending triage.
search_url = f'{BASE_URL}/customers/{CUSTOMER_ID}/quarantinedMessages:search'
search_body = {'filter': 'status = PENDING_TRIAGE', 'pageSize': 10}
response = requests.post(search_url, headers=headers, json=search_body)
response.raise_for_status()
for message in response.json().get('quarantinedMessages', []):
name = message['name']
# 2. Get the parsed message content.
details = requests.get(
f'{BASE_URL}/{name}?view=MESSAGE_VIEW_DETAILS', headers=headers)
details.raise_for_status()
subject = details.json().get('content', {}).get('subject', '')
# 3. Release or deny the message.
action = 'deny' if 'malicious' in subject.lower() else 'release'
result = requests.post(f'{BASE_URL}/{name}:{action}', headers=headers,
json={})
result.raise_for_status()
print(f"{name}: {result.json()['message']['state']}")
エラー レスポンス
| HTTP ステータス | 原因 |
|---|---|
400 INVALID_ARGUMENT |
リソース名の形式が正しくありません。 |
403 PERMISSION_DENIED |
なりすましの管理者が、メッセージを保持している検疫にアクセスできないか、トークンに https://www.googleapis.com/auth/gmail.admin.quarantine スコープがありません。 |
404 NOT_FOUND |
そのリソース名を持つ検疫済みメールは存在しません。メールが検疫から期限切れになった可能性があります。 |
429 RESOURCE_EXHAUSTED |
Google Cloud プロジェクトが書き込みリクエストの割り当てを超過している。Mail Admin Quarantine API の使用量割り当てをご覧ください。 |