Gmail iletilerini listeleme

Bu sayfada, Gmail API'nin users.messages.list yönteminin nasıl çağrılacağı açıklanmaktadır.

Bu yöntem, ileti id ve threadId içeren bir Gmail Message kaynakları dizisi döndürür. Tam mesaj ayrıntılarını almak için users.messages.get yöntemini kullanın.

Ön koşullar

Python

Gmail API'nin etkin olduğu bir Google Cloud projesi. Adımlar için Gmail API Python hızlı başlangıç'ı tamamlayın.

Mesajları listeleme

users.messages.list yöntemi, iletileri filtrelemek için çeşitli sorgu parametrelerini destekler:

  • maxResults: Döndürülecek maksimum ileti sayısı (varsayılan olarak 100, maksimum 500).
  • pageToken: Sonuçların belirli bir sayfasını almak için kullanılan jeton.
  • q: Mesajları filtrelemek için kullanılan sorgu dizesi (ör. from:someuser@example.com is:unread").
  • labelIds: Yalnızca belirtilen tüm etiket kimlikleriyle eşleşen etiketlere sahip iletileri döndürür.
  • includeSpamTrash: SPAM ve TRASH adreslerinden gelen iletileri sonuçlara dahil edin.

Kod örneği

Python

Aşağıdaki kod örneğinde, kimliği doğrulanmış Gmail kullanıcısının iletilerinin nasıl listeleneceği gösterilmektedir. Kod, sorguyla eşleşen tüm iletileri almak için sayfalara ayırma işlemini gerçekleştirir.

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

users.messages.list yöntemi, aşağıdakileri içeren bir yanıt gövdesi döndürür:

  • messages[]: Message kaynaklarının dizisi.
  • nextPageToken: Birden fazla sonuç sayfası içeren istekler için, daha fazla mesajı listelemek üzere sonraki çağrılarda kullanılabilecek bir jeton.
  • resultSizeEstimate: Tahmini toplam sonuç sayısı.

İletinin tam içeriğini ve meta verilerini getirmek için message.id alanını kullanarak users.messages.get yöntemini çağırın.