שחרור או דחייה של הודעה

אחרי שבודקים הודעה בהסגר, משתמשים ב-Mail Admin Quarantine API כדי לתעד את ההחלטה שהתקבלה:

  • לשחרר את ההודעה כדי לשלוח אותה לנמענים. אם ההודעה נכנסת, Gmail מעביר אותה לתיבת הדואר של הנמען. הודעה יוצאת נשלחת על ידי Gmail.
  • לדחות את ההודעה. ‫Gmail מסיר את ההודעה מההסגר ולא מעביר אותה.

בדף הזה מוסבר איך לשחרר או לדחות הודעה אחת. כדי לבצע פעולה על הרבה הודעות בבת אחת, אפשר לעיין בקטע שחרור או דחייה של הודעות באצוות.

דרישות מוקדמות

שחרור הודעה

כדי לשחרר הודעה, שולחים בקשת POST ל-method המותאם אישית :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 ל-method בהתאמה אישית :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

השלבים הבאים