In diesem Beitrag zeige ich dir wie du E-Mails mit Python3 absenden kannst und somit automatisiert Nachrichten versenden kannst.
Programmierung
Besonderheiten bei Google Mail
Wenn du zum Absenden einen kostenfreien Google Mail Account verwenden möchtest, dann musst du dir zusätzlich ein App-Passwort einrichten. Und wie du dir dieses Passwort einrichtest, erfährst du in diesem Abschnitt, solltest du dieses bereits haben, so kannst du diesen Abschnitt überspringen.
Schritt 1 – anmelden an den Google Account
Im ersten Schritt musst du dich an deinen Google Account anmelden.
Schritt 2 – App Passwort erstellen
Wenn du nun angemeldet bist, solltest du auf der linken Seite den Menüpunkt “Sicherheit” finden, welchen du nun anklickst. Es sollte sich dann in der Mitte der Seite der Eintrag.”
Das dargestellte, generierte App-Passwort ist nicht mehr gültig!
Absenden einer E-Mail
Um eine E-Mail absenden zu können, benötigen wir die Module smtplib und ssl. Die meisten Mailanbieter haben auf SSL umgestellt, somit ist man gezwungen (und das ist auch gut so) ssl zu verwenden.
import smtplib, ssl #die Absender E-Mail Adresse, diese wird #meist als Benutzernamen bei der Authentifizierung genutzt absender = 'meine_email_adresse_123@gmail.com' #E-Mail Adresse des Empfängers empfaenger = ['empfaenger_email_adresse@mail.de'] #SSL Port des Mailproviders port = 465 #das Passwort, bei zbsp. Gmail muss hier das generierte App-Passwort eingetragen werden passwort = '' #Die Nachricht, Subject leitet die Betreffzeile ein, #gefolgt von zwei Leerzeilen message = "Subject: Hello from Python\n\nHier steht ein Text." try: #SSL Verbindung aufbauen context = ssl.create_default_context() #der Postausgangsserver, in diesem Fall von Gmail server = smtplib.SMTP('smtp.gmail.com') server.ehlo() #Verbindung mit Start/TLS server.starttls() server.ehlo() #Anmelden mit der E-Mail Adresse & dem Passwort server.login(absender, passwort) #Absenden der E-Mail server.sendmail(absender, empfaenger, message) #Wenn bis hier kein Fehler aufgetreten ist dann wurde die E-Mail erfolgreich gesendet. print ('E-Mail erfolgreich gesendet') except Exception as e: #Wenn ein Fehler aufgetreten ist, dann soll dieser auf der Konsole ausgegeben werden. print ('Fehler beim absenden der E-Mail') print (e) finally: #zum Schluß (auch im Fehlerfall) die Verbindung zum Server trennen server.quit()
Beispielprojekt – Webseite überwachen
In diesem “kleinen” Beispiel möchte ich dir nun zeigen wie du verschiedene URLs überwachen kannst und wenn einmal eine nicht erreichbar ist eine entsprechende E-Mail absenden kannst. Dieses Tool kannst du als Monitoring von Webseiten / Webanwendungen nutzen.
import requests import _io import smtplib, ssl from smtplib import SMTPException urls = [] with open('adressen.txt', 'r') as file: for zeile in file: if(len(zeile.strip())>0): urls.append(zeile.strip()) logfileEntries = 0 errorMessage = '' with open('monitor.log', 'w') as logFile: for url in urls: r = requests.get(url) statusCode = r.status_code if statusCode != 200: msg = url + ' StatusCode: '+ str(statusCode)+'\n' logfileEntries = logfileEntries + 1 logFile.write(msg) errorMessage += msg if logfileEntries > 0: absender = 'meine_email_adresse_123@gmail.com' empfaenger = ['empfaenger_email_adresse@mail.de'] port = 465 passwort = '' message = "Subject: PyWebpageMonitoring\n\n"+errorMessage try: context = ssl.create_default_context() server = smtplib.SMTP('smtp.gmail.com') server.ehlo() server.starttls() server.ehlo() server.login(absender, passwort) server.sendmail(absender, empfaenger, message) print ('E-Mail erfolgreich gesendet') except Exception as e: print ('Fehler beim absenden der E-Mail') print (e) finally: server.quit()
Du benötigst zusätzlich eine Datei “adressen.txt” mit den URLs welche das Programm / Skript prüfen soll.
zbsp.:
https://draeger-it.blog https://google.de