После проверки помещенного в карантин письма используйте Mail Admin Quarantine API, чтобы записать свое решение:
- Разрешить доставку письма получателям. Входящие письма Gmail доставляет в почтовый ящик получателя. Для исходящего письма это Gmail.
- Отклонить сообщение. Gmail удаляет сообщение и не доставляет его.
В этой статье описывается, как разрешить или запретить доставку одного письма. Чтобы выполнить действие с несколькими сообщениями одновременно, ознакомьтесь с разделом Как одобрить или отклонить сообщения в пакетном режиме.
.Требования
- Вы выполнили инструкции из статьи Как настроить API.
- Токен доступа, который выдает себя за администратора с правами на карантин и включает область действия
https://www.googleapis.com/auth/gmail.admin.quarantine. Области действия только для чтения недостаточно. Подробнее об авторизации с делегированием доступа к данным в домене… - Название ресурса сообщения в карантине в состоянии
PENDING_TRIAGE, которое вы получаете из списка и поиска сообщений в карантине.
Как выпустить сообщение
Чтобы выпустить сообщение, отправьте запрос POST к специальному методу :release ресурса customers.quarantinedMessages, указав название ресурса сообщения и пустой текст JSON:
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"
}
}
Как отклонить сообщение
Чтобы отклонить сообщение, отправьте запрос POST в специальный метод :deny ресурса customers.quarantinedMessages, указав название ресурса сообщения и пустой текст JSON:
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… |