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.

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 rp2
import utime as time
import umail

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
rp2.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:

Teilen:

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen