Mencantumkan pesan Gmail

Halaman ini menjelaskan cara memanggil metode users.messages.list Gmail API.

Metode ini menampilkan array resource Gmail Message yang berisi id dan threadId pesan. Untuk mengambil detail pesan lengkap, gunakan metode users.messages.get.

Prasyarat

Python

Project Google Cloud dengan Gmail API yang diaktifkan. Untuk melihat langkah-langkahnya, selesaikan Panduan memulai cepat Gmail API Python.

Mencantumkan pesan

Metode users.messages.list mendukung beberapa parameter kueri untuk memfilter pesan:

  • maxResults: Jumlah maksimum pesan yang akan ditampilkan (defaultnya 100, maksimum 500).
  • pageToken: Token untuk mengambil halaman hasil tertentu.
  • q: String kueri untuk memfilter pesan, seperti from:someuser@example.com is:unread".
  • labelIds: Hanya menampilkan pesan dengan label yang cocok dengan semua ID label yang ditentukan.
  • includeSpamTrash: Menyertakan pesan dari SPAM dan TRASH dalam hasil.

Contoh kode

Python

Contoh kode berikut menunjukkan cara mencantumkan pesan untuk pengguna Gmail yang diautentikasi. Kode menangani penomoran halaman untuk mengambil semua pesan yang cocok dengan kueri.

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

Metode users.messages.list menampilkan isi respons yang berisi berikut:

  • messages[]: Array resource Message.
  • nextPageToken: Untuk permintaan dengan beberapa halaman hasil, token yang dapat digunakan dengan panggilan berikutnya untuk mencantumkan lebih banyak pesan.
  • resultSizeEstimate: Estimasi jumlah total hasil.

Untuk mengambil konten dan metadata pesan lengkap, gunakan kolom message.id untuk memanggil metode users.messages.get.