İletiyi serbest bırakma veya reddetme

Karantinaya alınmış bir iletiyi inceledikten sonra, önceliklendirme kararınızı kaydetmek için Mail Admin Quarantine API'yi kullanın:

  • Alıcılarına teslim etmek için iletiyi serbest bırakın. Gmail, gelen iletileri alıcının posta kutusuna teslim eder. Giden iletilerde ise Gmail'dir.
  • İletiyi reddetmek için Reddet'i seçin. Gmail iletiyi siler ve teslim etmez.

Bu sayfada, tek bir iletinin nasıl serbest bırakılacağı veya reddedileceği açıklanmaktadır. Aynı anda birden fazla ileti üzerinde işlem yapmak için İletileri toplu olarak yayınlama veya reddetme başlıklı makaleyi inceleyin.

Ön koşullar

  • API'yi ayarlama başlıklı makaledeki adımları tamamlamış olmanız gerekir.
  • Yönetici karantinası ayrıcalığına sahip bir yönetici kimliğine bürünen ve https://www.googleapis.com/auth/gmail.admin.quarantine kapsamını içeren bir erişim jetonu. Salt okunur kapsam yeterli değildir. Alan genelinde yetkiyle yetkilendirme başlıklı makaleyi inceleyin.
  • PENDING_TRIAGE durumundaki karantinaya alınmış bir iletinin kaynak adı. Bu adı, Karantinaya alınmış iletileri listeleme ve arama bölümünden alabilirsiniz.

İletiyi serbest bırakma

Bir mesajı serbest bırakmak için mesajın kaynak adındaki customers.quarantinedMessages kaynağının :release özel yöntemine boş bir JSON gövdesiyle POST isteği gönderin:

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

{}

Yanıt, message alanında güncellenmiş mesajı içerir ve state, RELEASED olarak ayarlanır:

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

İletiyi reddetme

Bir mesajı reddetmek için mesajın kaynak adındaki customers.quarantinedMessages kaynağının :deny özel yöntemine boş bir JSON gövdesiyle POST isteği gönderin:

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

{}

Yanıt, message alanında güncellenmiş mesajı içerir ve state, DENIED olarak ayarlanır:

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

Örnek: Bekleyen mesajları önceliklendirme

Aşağıdaki Python örneğinde, önceliklendirme bekleyen iletiler aranır, her iletinin konusu incelenir ve örnek bir kurala göre ileti serbest bırakılır veya reddedilir. Kuralı kendi önceliklendirme mantığınızla değiştirin.

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

Hata yanıtları

HTTP durumu Neden
400 INVALID_ARGUMENT Kaynak adı hatalı biçimlendirilmiş.
403 PERMISSION_DENIED Kimliğine bürünülen yöneticinin, iletiyi barındıran karantinaya erişimi yok veya jetonun https://www.googleapis.com/auth/gmail.admin.quarantine kapsamı yok.
404 NOT_FOUND Bu kaynak adına sahip karantinaya alınmış ileti yok. İletinin karantinadaki süresi dolmuş olabilir.
429 RESOURCE_EXHAUSTED Google Cloud projeniz yazma isteği kotasını aştı. Mail Admin Quarantine API kullanım kotaları başlıklı makaleyi inceleyin.

Sonraki adımlar