Libérer ou refuser un message

Après avoir examiné un message mis en quarantaine, utilisez l'API Mail Admin Quarantine pour enregistrer votre décision de tri :

  • Distribuez le message à ses destinataires. Pour un message entrant, Gmail le distribue dans la boîte aux lettres du destinataire. Pour un message sortant, Gmail l'envoie.
  • Refuser le message pour le rejeter. Gmail supprime le message et ne le distribue pas.

Cette page explique comment libérer ou refuser un seul message. Pour agir sur plusieurs messages à la fois, consultez Distribuer ou refuser des messages par lots.

Prérequis

Libérer un message

Pour libérer un message, envoyez une requête POST à la méthode personnalisée :release de la ressource customers.quarantinedMessages sur le nom de ressource du message avec un corps JSON vide :

POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages/MESSAGE_OWNER:MESSAGE_ID:release
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{}

La réponse contient le message mis à jour dans le champ message, avec state défini sur RELEASED :

{
  "message": {
    "name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
    "messageId": "18d3ef45a8b2c1d0",
    "messageOwner": "user@example.com",
    "state": "RELEASED"
  }
}

Refuser un message

Pour refuser un message, envoyez une requête POST à la méthode personnalisée :deny de la ressource customers.quarantinedMessages sur le nom de ressource du message avec un corps JSON vide :

POST https://mailadminquarantine.googleapis.com/v1/customers/CUSTOMER_ID/quarantinedMessages/MESSAGE_OWNER:MESSAGE_ID:deny
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{}

La réponse contient le message mis à jour dans le champ message, avec state défini sur DENIED :

{
  "message": {
    "name": "customers/01abc23de/quarantinedMessages/user@example.com:18d3ef45a8b2c1d0",
    "messageId": "18d3ef45a8b2c1d0",
    "messageOwner": "user@example.com",
    "state": "DENIED"
  }
}

Exemple : Trier les messages en attente

L'exemple Python suivant recherche les messages en attente de tri, inspecte l'objet de chaque message, puis l'approuve ou le refuse en fonction d'un exemple de règle. Remplacez la règle par votre propre logique de tri.

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']}")

Réponses d'erreur

État HTTP Cause
400 INVALID_ARGUMENT Le nom de la ressource est incorrect.
403 PERMISSION_DENIED L'administrateur dont l'identité est empruntée n'a pas accès à la zone de quarantaine contenant le message, ou le jeton ne dispose pas du champ d'application https://www.googleapis.com/auth/gmail.admin.quarantine.
404 NOT_FOUND Aucun message mis en quarantaine n'existe avec ce nom de ressource. Le message a peut-être expiré de la quarantaine.
429 RESOURCE_EXHAUSTED Votre projet Google Cloud a dépassé le quota de requêtes d'écriture. Consultez Quotas d'utilisation de l'API Mail Admin Quarantine.

Étapes suivantes