So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python

Dieses Mal werde ich darüber schreiben, wie mit Python und der Google Mail-API automatisch eine E-Mail mit einer angehängten Datei gesendet wird.

Senden Sie Google Mail mit Python-Code

Ich werde den Code schreiben, um eine E-Mail mit einer angehängten Datei zu senden. Anhänge-Dateien werden "Hallo .txt" unter dem Dokumentverzeichnis sein. Bitte erstellen Sie die angehängte Datei im Voraus.

Die ausgefüllte Form des Codes lautet wie folgt.

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import base64
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from apiclient import errors
from os.path import basename

#Legen Sie den Bereich für die Google Mail-API fest
SCOPES = ['https://www.googleapis.com/auth/gmail.send']

#Erstellen Sie den Inhalt der E-Mail
msg = MIMEMultipart()

#E-Mail-Text erstellen
def create_message(sender, to_email, subject, message_text):
    #E-Mail-Ziel
    msg['to'] = to_email
    #E-Mail-Absender
    msg['from'] = sender
    #E-Mail-Titel(Gegenstand)
    msg['subject'] = subject
    #Datei anhängen
    msg.attach(MIMEText(message_text))
    
    encode_message = base64.urlsafe_b64encode(msg.as_bytes())
    return {'raw': encode_message.decode()}

#Mail senden
def send_message(service, user_id, message):
    try:
        message = (service.users().messages().send(userId=user_id, body=message)
                   .execute())
        print('Message Id: %s' % message['id'])
        return message
    except errors.HttpError as error:
        print('An error occurred: %s' % error)

#Hauptverarbeitung
def main():
    #Zugriffstoken erhalten
    creds = None
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    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()
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)
    service = build('gmail', 'v1', credentials=creds)
    #E-Mail-Text erstellen
    sender = '*****@gmail.com' #Absenderadresse
    to_email = '*****@gmail.com' #Empfängeradresse
    subject = 'E-Mail-Versand-Automatisierungstest'
    message_text = 'Wir testen die Automatisierung des Mailversands.'
    
    #Datei anhängen
    path = "Documents/Hallo.txt"
    with open(path, "rb") as f:
        part = MIMEApplication(
            f.read(),
            Name=basename(path)
        )
    part['Content-Disposition'] = 'attachment; filename="%s"' % basename(path)
    msg.attach(part)
    
        
    message = create_message(sender, to_email, subject, message_text)
    #Rufen Sie die Google Mail-API auf, um eine E-Mail zu senden
    send_message(service, 'me', message)

#Programmausführung
if __name__ == '__main__':
    main()

Programmausführung

Wenn Sie das oben genannte Programm ausführen, wird zum ersten Mal der Bildschirm zur Auswahl des Google-Kontos angezeigt. Wählen Sie also das Konto aus, um die E-Mail zu senden.

Wenn Sie ein Konto auswählen, wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob die Gewährung von Google Mail-Nutzungsrechten zulässig ist. Klicken Sie auf Zulassen.

Ein Bestätigungsbildschirm für Ihre Auswahl wird angezeigt. Klicken Sie daher auf die gleiche Weise auf Zulassen.

Wenn sich der Benutzer authentifiziert, wird im Browser die Meldung "Der Authentifizierungsablauf ist abgeschlossen, Sie können dieses Fenster schließen" angezeigt.

Damit ist die E-Mail-Übertragung abgeschlossen. Bitte überprüfen Sie, ob die E-Mail angekommen ist.

Zusammenfassung

Ich erklärte, wie man das Versenden von E-Mails automatisiert. Dieses Mal wurde eine E-Mail gesendet. Wenn Sie sie jedoch erweitern, können Sie mehrere E-Mails gleichzeitig senden. Wenn Sie bei Ihrer täglichen Arbeit jedes Mal ähnliche E-Mails senden, lesen Sie diese bitte.

Recommended Posts

So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Senden Sie eine E-Mail mit Python an Spushis Adresse
Senden Sie eine E-Mail mit Excel in Python
Senden Sie mit Python mit Google Mail
Geben Sie den Bericht mit Python aus DB in PDF aus, hängen Sie ihn automatisch an eine E-Mail an und senden Sie ihn
[Python] Mail mit Outlook senden
[Python] API zum Senden von Google Mail erstellen
Senden Sie E-Mails über Google Mail mit Python 3.4.3.
[Python] Senden Sie eine E-Mail aus Google Mail mit einer zweistufigen Authentifizierungseinstellung
Eine einfache Möglichkeit, die Amazon-Produkt-API in Python aufzurufen
Versuchen Sie es mit der Wunderlist-API in Python
HTML-Mail mit Bild zum Senden mit Python
[Version September 2020] Erläutert das Verfahren zur Verwendung der Google Mail-API mit Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Tweet mit der Twitter-API in Python
Senden Sie eine E-Mail mit Amazon SES + Python
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Erstellen Sie eine Anwendung, die nur mit der Google Custom Search-API mit Python 3.3.1 in Bottle sucht
Ich habe versucht, das automatische Senden einer E-Mail durch Doppelklicken auf das Symbol [Python] zu ermöglichen
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Versuchen Sie, eine E-Mail mit der Google Mail API-Clientbibliothek für Java zu senden
E-Mail-Anhänge über Ihr Google Mail-Konto mit Python.
Ich möchte mit Python eine E-Mail von Google Mail senden.
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Mail per Python senden
Senden Sie Google Mail in Python
Ich habe versucht, das automatische Senden einer E-Mail durch Doppelklicken auf das Symbol [GAS / Python] zu ermöglichen
Ich möchte Google Mail mit Python senden, kann dies jedoch aufgrund eines Fehlers nicht
Rufen Sie weiterhin Tweets mit bestimmten Schlüsselwörtern mithilfe der Streaming-API in Python ab
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich habe versucht zu erklären, wie der Artikelinhalt mit der MediaWiki-API auf leicht verständliche Weise anhand von Beispielen abgerufen werden kann (Python 3).
Senden Sie japanische Post mit Python3
Mail senden mit Python (Outlook)
Als offene Daten mithilfe der CKAN-API in Python hochladen und automatisch mit Github-Aktionen verknüpfen
Rufen Sie die API mit python3 auf.
Die erste API, die mit dem Python Djnago REST-Framework erstellt wurde
So manipulieren Sie das DOM im Iframe mit Selen
Code zum Senden von E-Mails basierend auf der Excel-E-Mail-Liste
Eine Einführung in die moderne Socket-API zum Erlernen in C.
Vorsichtsmaßnahmen bei der Verwendung von Python mit AtCoder
Dinge, die Sie bei der Verwendung von CGI mit Python beachten sollten.
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
So melden Sie sich mit Python bei AtCoder an und senden automatisch
[boto3] Senden Sie eine E-Mail mit SES
Abrufen der arXiv-API in Python
Klicken Sie in Python auf die Sesami-API
[Automatisierung] Senden Sie Outlook-E-Mails mit Python
Im Python-Befehl zeigt Python auf Python3.8
Klicken Sie mit Python auf die Etherpad-Lite-API
Erstellen Sie Google Mail in Python ohne Verwendung der API
Klicken Sie auf die Web-API in Python
Hinweis: Senden Sie eine E-Mail mit Django
Greifen Sie mit Python auf die Twitter-API zu
Eine Alternative zu "Pause" in Python
Wie Sie die interne Struktur eines Objekts in Python kennen
Erstellen Sie mit der AWS-API einen Alias für Route53 zu CloudFront