🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
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

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb