Threads verwalten

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

Wie bei Nachrichten können auch Threads Labels hinzugefügt werden. Anders als 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 bieten eine einfache Möglichkeit, Nachrichten in einer Unterhaltung in der richtigen Reihenfolge abzurufen. Wenn Sie mehrere Threads auflisten, können Sie Nachrichten nach Unterhaltung gruppieren und zusätzlichen Kontext hinzufügen. Mit der Methode threads.list können Sie eine Liste der Threads abrufen. Mit threads.get können Sie einen bestimmten Thread abrufen. Sie können Threads auch mit denselben Suchparametern filtern wie für die Message-Ressource. Wenn eine Nachricht in einem Thread mit der Suchanfrage übereinstimmt, wird dieser Thread im Ergebnis zurückgegeben.

Im folgenden Codebeispiel wird gezeigt, wie Sie beide Methoden in einem Beispiel verwenden, das die gesprächigsten Threads in Ihrem Posteingang anzeigt. Mit der Methode threads.list werden alle Thread-IDs abgerufen und dann mit threads.get alle Nachrichten in jedem Thread. Bei Antworten mit mindestens drei Antworten wird die Zeile Subject extrahiert und die nicht leeren Zeilen sowie die Anzahl der Nachrichten im Thread werden angezeigt. Dieses Codebeispiel finden Sie auch im entsprechenden DevByte-Video.

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 sind oder Teil einer Unterhaltung sind, sollte Ihre Anwendung diese Nachricht dem zugehörigen Thread hinzufügen. So können Gmail-Nutzer, die an der Unterhaltung teilnehmen, die Nachricht leichter im Kontext behalten.

Ein Entwurf kann einem Thread beim Erstellen, Aktualisieren oder Senden einer Entwurfsnachricht hinzugefügt werden. 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 in Ihrer Anfrage angeben.
  2. Die Header References und In-Reply-To müssen dem Standard RFC 2822 entsprechen.
  3. Die Subject-Überschriften 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.