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