Threads verwalten

In der Gmail API werden Thread-Ressourcen verwendet, um E-Mail-Antworten mit der ursprünglichen Nachricht in einer einzigen Unterhaltung oder einem Thread zu gruppieren. Auf diese Weise können Sie alle Nachrichten in einer Konversation in der angegebenen Reihenfolge abrufen, was es einfacher macht, Kontext für eine Nachricht zu haben oder die Suchergebnisse zu verfeinern.

Wie Nachrichten können Threads auch Labels haben. Im Gegensatz zu Nachrichten können Threads jedoch nicht erstellt, sondern nur gelöscht werden. Nachrichten können jedoch in einen Thread eingefügt werden.

Inhalt

Threads abrufen

Threads sind eine einfache Möglichkeit, Nachrichten in einer Unterhaltung der Reihe nach abzurufen. Durch die Auflistung einer Reihe von Threads können Sie Nachrichten nach Konversation gruppieren und zusätzlichen Kontext bereitstellen. Sie können eine Liste von Threads mit der Methode threads.list oder einen bestimmten Thread mit threads.get abrufen. Sie können auch Threads filtern, indem Sie dieselben Abfrageparameter wie für die Message-Ressource verwenden. Wenn eine Nachricht in einem Thread mit der Abfrage übereinstimmt, wird dieser Thread im Ergebnis zurückgegeben.

Das folgende Codebeispiel zeigt, wie beide Methoden in einem Beispiel verwendet werden, das die meisten Chat-Threads in Ihrem Posteingang anzeigt. Die Methode threads.list ruft alle Thread-IDs ab, dann threads.get alle Nachrichten in jedem Thread. Bei drei oder mehr Antworten extrahieren wir die Zeile Subject und zeigen die nicht leeren sowie die Anzahl der Nachrichten im Thread an. Dieses Codebeispiel ist auch im entsprechenden DevByte-Video zu finden.

Python

gmail/snippet/thread/threads.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def show_chatty_threads():
  """Display threads with long conversations(>= 3 messages)
  Return: None

  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()

  try:
    # create gmail api client
    service = build("gmail", "v1", credentials=creds)

    # pylint: disable=maybe-no-member
    # pylint: disable:R1710
    threads = (
        service.users().threads().list(userId="me").execute().get("threads", [])
    )
    for thread in threads:
      tdata = (
          service.users().threads().get(userId="me", id=thread["id"]).execute()
      )
      nmsgs = len(tdata["messages"])

      # skip if <3 msgs in thread
      if nmsgs > 2:
        msg = tdata["messages"][0]["payload"]
        subject = ""
        for header in msg["headers"]:
          if header["name"] == "Subject":
            subject = header["value"]
            break
        if subject:  # skip if no Subject line
          print(f"- {subject}, {nmsgs}")
    return threads

  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  show_chatty_threads()

Entwürfe und Nachrichten zu Threads hinzufügen

Wenn Sie Nachrichten senden oder migrieren, die eine Antwort auf eine andere E-Mail oder einen Teil einer Konversation sind, sollte Ihre Anwendung diese Nachricht dem zugehörigen Thread hinzufügen. Dies erleichtert es Gmail-Nutzern, die an der Unterhaltung beteiligt sind, die Nachricht im Kontext zu behalten.

Ein Entwurf kann einem Thread beim Erstellen, Aktualisieren oder Senden eines Nachrichtenentwurfs hinzugefügt werden. Sie können einem Thread auch eine Nachricht hinzufügen, wenn Sie eine Nachricht einfügen oder senden.

Nachrichten oder Entwürfe müssen folgende Kriterien erfüllen, um Teil eines Threads zu werden:

  1. Die angeforderte threadId muss in der Message oder Draft.Message angegeben werden, die Sie mit Ihrer Anfrage angeben.
  2. Die Header References und In-Reply-To müssen gemäß dem RFC 2822-Standard festgelegt werden.
  3. Die Subject-Header müssen übereinstimmen.

Sehen Sie sich die Beispiele zum Erstellen eines Entwurfs oder zum Senden einer Nachricht an. In beiden Fällen fügen Sie den Metadaten einer Nachricht, dem message-Objekt, einfach einen threadId-Schlüssel mit einer Thread-ID hinzu.