Raspberry Pi Pico W: E-Mail senden

In der Regel dürfte jeder eine eigene E-Mail-Adresse haben. Das heißt, jeder kann E-Mails senden und empfangen. Für die elektronische Kommunikation ist das der kleinste gemeinsame Nenner.

Die Idee ist, dass ein Raspberry Pi Pico W eine E-Mail an seinen Nutzer sendet, wenn ein Ereignis ausgelöst wird oder Daten gesendet werden müssen. Wenn man von einem Pico nicht ständig Daten anfordern will, ist das ein praktische Lösung. Du kannst Dir Informationen und Daten in Dein E-Mail-Postfach liefern lassen.

Es geht im folgenden darum, dass ein Raspberry Pi Pico W eine E-Mail testweise versenden. Der folgende Programmcode ist also keine fertige oder vollständige Anwendung, sondern soll nur die prinzipielle Möglichkeit zum Senden einer E-Mail darstellen. Sozusagen der erste Schritt, bevor zu das in Deiner eigenen Anwendung implementierst.

Damit eine E-Mail versendet werden kann, benötigen wir eine externe MicroPython-Bibliothek und die Zugangsdaten zu einem vorhandenen E-Mail-Account.

SMTP-Bibliothek für MicroPython

MicroPython verfügt über keine eigenen Funktionen, um E-Mails zu versenden. Hierfür muss man auf eine externe MicroPython -Bibliothek zurückgreifen, mit der E-Mails per SMTP versendet werden können.
Das SMTP-Protokoll ist für die Übertragung von E-Mails vom SMTP-Client des Absenders zum SMTP-Server (Postausgang) und zwischen Mail-Servern zuständig.

Die einfachste Lösung zum Senden von E-Mails ist die Bibliothek µMail (MicroMail). Sie funktioniert mit den meisten Mail-Providern.

Die Bibliothek (Datei) muss heruntergeladen und auf dem Raspberry Pi Pico W mit dem Dateinamen umail.py gespeichert werden.

Hinweis zur sicheren Übertragung von E-Mails: Die Bibliothek „umail“ verwendet zum Senden der E-Mails an den SMTP-Server „STARTTLS“. Das heißt, die Übertragung der E-Mails erfolgt mit TLS und damit verschlüsselt.

Programmcode: E-Mails verschicken mit µMail (MicroMail)

Im folgenden Programmcode wird zuerst eine Verbindung mit einem WLAN hergestellt. Hierzu sind die Zugangsdaten korrekt einzutragen.

  • wlanSSID: Das ist der Name des WLANs zu dem eine Verbindung hergestellt werden soll.
  • wlanPW: Das ist das WLAN-Passwort von dem WLAN.

Desweiteren muss im Programmcode die SMTP-Login-Konfiguration hinterlegt werden, wie sie in jedem E-Mail-Client eingerichtet ist (smtpHost, smtpPort, fromName, fromMail, fromPW). Desweiteren muss die E-Mail-Adresse und ein Name angegeben werden, an die die E-Mail verschickt werden soll (toName, toMail). Außerdem hat eine E-Mail typischerweise einen Betreff (Subject) und einen Text als Nachricht.

  • smtpHost: Das ist die Host-Adresse des SMTP-Servers. Es handelt sich in der Regel um einen Domain-Namen.
  • smtpPort: Portnummer auf dem SMTP-Server. In der Regel 587.
  • fromName: Hier wird der Name oder die Bezeichnung eingetragen, wem die E-Mail-Adresse gehört, von der die E-Mail verschickt werden soll.
  • fromMail: Die verwendete E-Mail-Adresse, von der die E-Mail verschickt werden soll.
  • fromPW: Zugehöriges Passwort der E-Mail-Adresse für die Authentifizierung gegenüber dem SMTP-Server.
  • toName: Name oder Bezeichnung des Empfängers der E-Mail.
  • toMail: E-Mail-Adresse, an die die E-Mail gesendet wird.
  • mailSubject: Betreffzeile der E-Mail. Kann im Verlauf des Programmcodes auch dynamisch erzeugt werden.
  • mailText: Text der E-Mail. Kann im Verlauf des Programmcodes auch dynamisch erzeugt werden.

Nachdem die WLAN-Verbindung hergestellt wurde, wird die Verbindung zum SMTP-Server hergestellt und die E-Mail an den eigenen SMTP-Server gesendet. Der übernimmt die Zustellung an den Mail-Server des Empfängers. Das kann auch die eigene E-Mail-Adresse sein. Danach wird das Programm automatisch beendet.

# Bibliotheken laden
import machine
import network
import time
import umail

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
network.country('DE')

# E-Mail-Konfiguration (Sender)
smtpHost = 'smtp-host'
smtpPort = 587
fromName = 'Name'
fromMail = 'E-Mail-Adresse'
fromPW = 'Passwort'

# E-Mail-Konfiguration (Empfänger)
toName = 'Name'
toMail = 'E-Mail-Adresse'

# E-Mail: Betreff und Text
mailSubject = 'E-Mail von Raspberry Pi Pico W'
mailText = 'Das ist ein Test.' + "\n" + 'Diese E-Mail wurde von einem Raspberry Pi Pico W verschickt.'

# Status-LED für die WLAN-Verbindung
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# E-Mail senden
print('E-Mail wird gesendet')
smtp = umail.SMTP(smtpHost, smtpPort)
smtp.login(fromMail, fromPW)
smtp.to(toMail)
smtp.write('From: ' + fromName + ' <' + fromMail + '>' + "\r\n")
smtp.write('To: ' + toName + ' <' + toMail + '>' + "\r\n")
smtp.write('Subject: ' + mailSubject + "\r\n\r\n")
smtp.write(mailText + "\r\n")
smtp.send()
smtp.quit()

# Programm beenden
#wlan.disconnect()
print('E-Mail wurde gesendet und Programm beendet')

Hinweis: Die E-Mail-Kommunikation ist nicht dafür geeignet, im Sekunden- oder Minutentakt E-Mails zu versenden. Bei der Implementierung in eine eigene Anwendung muss man den Versand von E-Mails zeitlich stark begrenzen.

Mehr Informationen über E-Mail

E-Mail ist neben dem Telefon und Messaging ein zentrales Kommunikationsmittel in unserer Gesellschaft. Nachrichten, Diskussionen und Austausch von Dokumenten, das alles ist mit E-Mail möglich.
Das Senden und Empfangen von E-Mails erfolgt weitgehend softwaregesteuert. Das Lesen und Schreiben von E-Mails erfolgt typischerweise durch einen Benutzer. Die maschinelle Verarbeitung von eingehenden E-Mails ist vergleichsweise komplex und fehleranfällig, weshalb das in der Regel vermieden wird.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren