Python gmail API integreren met behulp van een serviceaccount

25 feb. 2024 | by Ralph Van Der Horst

Python Gmail Api integreren met behulp van een serviceaccount

PythongMail Api integreren met behulp van een serviceaccount om bijvoorbeeld Oauth op te halen

In het verleden heb ik een blogpost gemaakt over de integratie van Google Sheets API met Katalon Studio via een serviceaccount.

Je kunt dit ook doen in python:

Serviceaccount instellen en inloggegevens downloaden

  • Ga naar de Google Cloud Console.
  • Maak een nieuw project of selecteer een bestaand project.
  • Navigeer naar IAM & Admin > Serviceaccounts en klik op „Serviceaccount aanmaken”.
  • Vul de nodige informatie in en klik op „Aanmaken”.
  • Verleen het serviceaccount de nodige machtigingen (voor Gmail API: Gmail API > Gmail API-gebruiker).
  • Klik op „Doorgaan” en vervolgens op „Gereed”.
  • Klik op het nieuw aangemaakte serviceaccount om de details ervan te bekijken.
  • Klik op het tabblad Keys op „Sleutel toevoegen” en selecteer „JSON”. Hiermee wordt een JSON-sleutelbestand gedownload. Bewaar dit bestand veilig.
  • Deel de mailbox met het serviceaccount door naar je Gmail-instellingen > Accounts en importeren > Toegang verlenen tot je account te gaan.
  • Installeer de benodigde bibliotheken Je hebt de google-auth- en google-api-python-client-bibliotheken nodig. Je kunt ze installeren via pip:
pip install --upgrade google-auth google-autho-authlib google-auth-httplib2 google-api-python-client
import google.auth
from google.oauth2 import service_account
from googleapiclient.discovery import build
import base64

# Load the credentials
SERVICE_ACCOUNT_FILE = 'path_to_service_account.json'
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']


credentials = service_account.Credentials.from_service_account_file(
   SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# The email ID for the user you're trying to impersonate.
user_email = 'your_email@gmail.com'
delegated_credentials = credentials.with_subject(user_email)

# Build the Gmail API client
service = build('gmail', 'v1', credentials=delegated_credentials)

# Define your query
query = "from:example@example.com subject:'Important'"

# Filter messages based on the query
results = service.users().messages().list(userId='me', q=query, maxResults=10).execute()
messages = results.get('messages', [])

for message in messages:
   msg = service.users().messages().get(userId='me', id=message['id']).execute()

   # Get the message body
   msg_body = base64.urlsafe_b64decode(msg['payload']['body']['data']).
decode('utf-8').print(msg_body)

Dingen om te updaten

Vervang path_to_service_account.json door het pad naar het JSON-bestand van uw serviceaccount en your_email@gmail.com door het e-mailadres waarvan u de berichten wilt lezen.

Vervang de waarde van de queryvariabele door de gewenste filtervoorwaarde. In het bovenstaande voorbeeld filtert het berichten van example@example.com met een onderwerp dat het woord „Belangrijk” bevat. De parameter q ondersteunt verschillende zoekcombinaties, net als het zoekvak van Gmail. Enkele voorbeelden zijn:

Als je berichten in Gmail programmatisch wilt filteren met behulp van de Gmail API en Python, kun je de parameter q gebruiken in de lijstmethode van de Gmail API. De parameter q ondersteunt hetzelfde queryformaat dat je gebruikt in het zoekvak van Gmail.

by Ralph Van Der Horst

arrow right
back to blog

share this article

Relevant articles

ISTQB Geavanceerd niveau

ISTQB Geavanceerd niveau

Stel de oauth2-client in voor Salesforce dev env voor API-testen met curl postman en Katalon

Stel de oauth2-client in voor Salesforce dev env voor API-testen met curl postman en Katalon

Het integreren van JIRA met Cucumber en Serenity/JS voor verbeterd testbeheer

Het integreren van JIRA met Cucumber en Serenity/JS voor verbeterd testbeheer