Gmail-Nachrichten auflisten

In diesem Dokument wird erläutert, wie Sie die Methode der Gmail API aufrufen. messages.list

Die Methode gibt ein Array von messages-Objekten der Gmail API zurück, die die id und threadId der Nachricht enthalten. Wenn Sie alle Details einer Nachricht abrufen möchten, verwenden Sie die messages.get Methode.

Vorbereitung

Python

Ein Google Cloud-Projekt mit aktivierter Gmail API. Führen Sie die Schritte in der Gmail API-Schnellstartanleitung für Python aus.

Nachrichten auflisten

Die Methode messages.list unterstützt mehrere Abfrageparameter zum Filtern der Nachrichten:

  • maxResults: Maximale Anzahl der zurückzugebenden Nachrichten (Standardwert: 100, Maximum: 500).
  • pageToken: Token zum Abrufen einer bestimmten Ergebnisseite.
  • q: Abfragestring zum Filtern von Nachrichten, z. B. from:someuser@example.com is:unread.
  • labelIds: Gibt nur Nachrichten mit Labels zurück, die mit allen angegebenen Label IDs übereinstimmen.
  • includeSpamTrash: Schließt Nachrichten aus SPAM und TRASH in die Ergebnisse ein.

Codebeispiel

Python

Das folgende Codebeispiel zeigt, wie Sie Nachrichten für den authentifizierten Gmail-Nutzer auflisten. Der Code verarbeitet die Paginierung, um alle Nachrichten abzurufen, die der Abfrage entsprechen.

gmail/snippet/list_messages.py
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/gmail.readonly"]


def main():
    """Shows basic usage of the Gmail API.
    Lists the user's Gmail messages.
    """
    creds = None
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists("token.json"):
        creds = Credentials.from_authorized_user_file("token.json", SCOPES)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open("token.json", "w") as token:
            token.write(creds.to_json())

    try:
        # Call the Gmail API
        service = build("gmail", "v1", credentials=creds)
        results = (
            service.users().messages().list(userId="me", labelIds=["INBOX"]).execute()
        )
        messages = results.get("messages", [])

        if not messages:
            print("No messages found.")
            return

        print("Messages:")
        for message in messages:
            print(f'Message ID: {message["id"]}')
            msg = (
                service.users().messages().get(userId="me", id=message["id"]).execute()
            )
            print(f'  Subject: {msg["snippet"]}')

    except HttpError as error:
        # TODO(developer) - Handle errors from gmail API.
        print(f"An error occurred: {error}")


if __name__ == "__main__":
    main()

Die Methode messages.list gibt einen Antworttext zurück, der Folgendes enthält:

  • messages[]: Ein Array von Message-Ressourcen.
  • nextPageToken: Für Anfragen mit mehreren Ergebnisseiten ein Token, das mit nachfolgenden Aufrufen verwendet werden kann, um weitere Nachrichten aufzulisten.
  • resultSizeEstimate: Eine geschätzte Gesamtzahl der Ergebnisse.

Verwenden Sie das Feld message.id, um die Methode messages.get aufzurufen und den vollständigen Nachrichtentext und die Metadaten abzurufen.