Threads verwalten

In der Gmail API werden Thread-Ressourcen verwendet, um E-Mail-Antworten mit der ursprünglichen Nachricht in einer einzigen Konversation oder einem Thread zu gruppieren. So können Sie alle Nachrichten in einer Unterhaltung in der richtigen Reihenfolge abrufen, was es einfacher macht, den Kontext einer Nachricht zu verstehen oder Suchergebnisse zu verfeinern.

Wie bei Nachrichten können auch Threads mit Labels versehen werden. Anders als bei 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

Mit Threads können Sie Nachrichten in einer Unterhaltung ganz einfach in der richtigen Reihenfolge abrufen. Wenn Sie eine Reihe von Threads auflisten, können Sie Nachrichten nach Unterhaltung gruppieren und zusätzlichen Kontext bereitstellen. Mit der Methode threads.list können Sie eine Liste von Threads abrufen. Mit threads.get können Sie einen bestimmten Thread abrufen. Sie können Threads auch filtern. Verwenden Sie dazu dieselben Suchparameter wie für die Message-Ressource. Wenn eine Nachricht in einem Thread der Abfrage entspricht, wird dieser Thread im Ergebnis zurückgegeben.

Das folgende Codebeispiel zeigt, wie Sie beide Methoden in einem Beispiel verwenden, in dem die Threads mit den meisten Nachrichten in Ihrem Posteingang angezeigt werden. Mit der Methode threads.list werden alle Thread-IDs abgerufen. Anschließend werden mit threads.get alle Nachrichten in den einzelnen Threads abgerufen. Bei Threads mit mindestens drei Antworten wird die Subject-Zeile extrahiert und die nicht leeren Zeilen sowie die Anzahl der Nachrichten im Thread werden angezeigt. Dieses Codebeispiel wird auch im entsprechenden DevByte-Video gezeigt.

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()

Threads Entwürfe und Nachrichten hinzufügen

Wenn Sie Nachrichten senden oder migrieren, die eine Antwort auf eine andere E‑Mail oder Teil einer Unterhaltung sind, sollte Ihre Anwendung diese Nachricht dem entsprechenden Thread hinzufügen. So können Gmail-Nutzer, die an der Unterhaltung teilnehmen, die Nachricht leichter im Kontext sehen.

Ein Entwurf kann einem Thread hinzugefügt werden, wenn Sie eine Entwurfsnachricht erstellen, aktualisieren oder senden. Sie können einem Thread auch eine Nachricht hinzufügen, wenn Sie eine Nachricht einfügen oder senden.

Damit eine Nachricht oder ein Entwurf Teil eines Threads sein kann, müssen die folgenden Kriterien erfüllt sein:

  1. Die angeforderte threadId muss auf dem Message oder Draft.Message angegeben sein, das Sie mit Ihrer Anfrage einreichen.
  2. Die Header References und In-Reply-To müssen gemäß dem Standard RFC 2822 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.