Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Python #19 – absenden von E-Mails

Posted on 10. Juli 20201. Mai 2023 by Stefan Draeger

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
      • Schritt 1 – anmelden an den Google Account
      • Schritt 2 – App Passwort erstellen
      • Absenden einer E-Mail
    • Beispielprojekt – Webseite überwachen

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.“

Menü im Dashboard
Menü im Dashboard
einrichten des App-Passwortes
einrichten des App-Passwortes
anmelden an das Google Konto
anmelden an das Google Konto
wählen eines App Namens
wählen eines App Namens
App-Name gesetzt
App-Name gesetzt
generiertes App-Passwort
generiertes App-Passwort

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

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}