Vom Raspberry Pi Emails versenden – Verschiedene Möglichkeiten

In einigen Projekten ist es nötig oder hilfreiche eine Mitteilung per Mail zu versenden. Dies ist natürlich auch möglich, wobei es jedoch verschiedene Möglichkeiten gibt. In diesem Tutorial geht es daher darum, wie man mit dem Raspberry Pi Emails senden kann, per Konsole, PHP, Python und vielen weiteren Sprachen.

Viel wird außer einem Raspberry Pi für dieses Tutorial nicht benötigt, da alles softwareseitig stattfindet. Dein Raspbian System sollte fertig eingerichtet und auf dem aktuellen Stand sein. Danach können wir direkt starten.

 

Per Kommandozeile Emails senden

Die einfachste und wahrscheinlich meist genutzte Möglichkeit mit dem Raspberry Pi Emails zu versenden ist über die Kommandozeile (Bash). Dies hat den Vorteil, dass es über verschiedene Sprachen (bspw. Python) einfach aufgerufen werden kann und somit die Mail verschickt wird, ohne dass viele andere Bibliotheken installiert werden müssen.

Alles was wir dazu brauchen ist ein kleines Paket, dass all dies für uns übernimmt. Wir loggen uns also per SSH ein und installieren es folgendermaßen:

sudo apt-get update && sudo apt-get install ssmtp mailutils

Dies dauert einen Augenblick. Danach sind wir schon fast fertig! Wir müssen lediglich noch unsere Daten eines Email Accounts eintragen, von dem die Mails gesendet werden sollen:

sudo nano /etc/ssmtp/ssmtp.conf

Hier ein Beispiel für GMail. Falls du einen anderen Provider nutzt, schaue dort die SMTP Einstellungen nach. Folgender Inhalt kommt in die Datei (Email Adresse und Passwort entsprechend anpassen):

root=postmaster
mailhub=smtp.gmail.com:587
hostname=raspberrypi
FromLineOverride=YES
AuthUser=EMAILADRESSE@gmail.com
AuthPass=DEINPASSWORT
UseSTARTTLS=YES

Mittels der Option rewriteDomain=your.domain und der Datei /etc/ssmtp/revaliases können auch noch andere Absender angegeben werden (die Mail wird von deinem Google Konto gesendet, aber es erscheint als xy@your.domain. Speichere mit STRG+O und kehre mit STRG+X zurück zur Konsole.

Nun testen wir das ganze einmal. Gib folgendes ein (Passe die Email Adresse an, damit du überprüfen kannst, ob die Mail auch ankam):

echo “Test Inhalt text” | mail -s “Test Betreff Mail” empfaenger-mail@example.com

Der erste Parameter gibt den textuellen Inhalt an (hier ist auch HTML möglich), der zweite den Betreff der Mail und der dritte die Empfänger Email Adresse. Die Mail sollte gleich ankommen.

Falls du hier eine Fehlermeldung bekommst, ist es wahrscheinlich, dass die angegebenen Daten in der Konfigurationsdatei nicht stimmen. Überprüfe deinen User und Passwort.

Eine andere kleine Alternative ist der NullMailer.

 

Per PHP Skript vom Raspberry Pi Emails senden

Eine weitere Möglichkeit ist den Mail Versand direkt per PHP zu starten. Dies kann z.B. für reine PHP Skripte sinnvoll sein. Zwar gibt es auch die Funktion shell_exec in PHP, womit wir den oberen Befehl ausführen können, jedoch geht dies auch ohne das vorherige Tool.

Damit wir Mails versenden können, muss Apache2 und PHP installiert sein. Am besten solltest du PHP7 installieren, da PHP5 bald nicht mehr unterstützt wird.

sudo apt-get install -y apache2

Die Source Listen enthalten nicht die Packages für PHP7, daher müssen wir diese erst hinzufügen:

sudo nano /etc/apt/sources.list

Füge folgende zwei Zeilen am Ende hinzu:

deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
#deb-src http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free

Für die Paketquellen sind zusätzliche Zertifikate nötig, welche wir hinzufügen:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
sudo gpg --armor --export CCD91D6111A06851 | sudo apt-key add -

Nun entfernen wir erst alte PHP5 Pakete (sofern vorhanden) und aktualisieren die Paketquellen, sodass wir anschließend die PHP7 Packages installieren können:

sudo apt-get remove php5*
sudo apt-get update
sudo apt-get install -y php7.0 php7.0-curl php7.0-gd php7.0-imap php7.0-json php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-xmlrpc libapache2-mod-php7.0

Prüfe ob die Installation geklappt hat mit:

php -v

 

Soweit, so gut. Nun wollen wir den entsprechenden Code zum Senden der Emails erstellen. Dies kann natürlich in alle PHP Dateien eingebunden werden, von der eine Mail versendet werden soll. Erstelle dazu eine Snippet Datei:

sudo nano mail-php-snippet.php

Diese Datei bekommt folgenden Inhalt (Sender und Empfänger anpassen):

Speichere nun mit STRG+O und gehe zurück zur Bash mit STRG+X. Anschließend kannst du das Skript aufrufen, worauf hin die Mail versendet wird:

php mail-php-snippet.php

Sollte die Email nicht sofort angekommen sein, schaue auch in deinem Spam Ordner nach.

Übrigens: Ein solches PHP Skript kann auch Eingabeparameter annehmen und somit per Konsole aufgerufen werden. Das hingegen ermöglicht auch eine Benutzung durch andere Programme. Unsere Python (etc.) Skripte können also ihre Parameter einfach übergeben. Der Vorteil ist hierbei, dass wir kein eigens eingerichtetes Email Konto brauchen.

10 Kommentare

  1. Eine weitere lohnenswerte Alternative auf einem Raspberry Pi (oder einem anderen Debian-ähnlichen System) ist das Paket msmtp (bzw. msmtp-mta), das über die Paketverwaltung installiert wird und mit ebenfalls nur sehr geringem Aufwand konfiguriert wird. Das wäre für viele bestimmt auch interessant zu lesen.

    Antworten
  2. Hallo,
    „Dies hat den Vorteil, dass es über verschiedene Sprachen (bspw. Python) einfach aufgerufen werden kann und somit die Mail verschickt wird.“…….
    …..und wie sende ich denn nun über ein Python-Programm meine Mail ohne dabei das laufende Programm zu unterbrechen?
    Ich könnte das nämlich gut brauchen für eine Alarmanlage, die ich mit einem Raspi und einem PiFace betreibe. Bisher habe ich im Alarmfall neben dem Alarmton, der eingeschaltet wird, nur eine mit „print“ in einem LX-Terminal ausgegebene Meldung. Solange ich in der Nähe bin reicht das. Wenn ich aber längere Zeit abwesend bin, wäre es schön, wenn mir das Programm eine Mail mit Datum und Uhrzeit des Alarmfalls senden würde. Da ich zwar auf Reisen nicht täglich meine Mails lese, aber doch ab- und zu bei Gelegenheit mal da reinschaue, wäre es auch beruhigend, wenn KEINE Alarmmeldung im Postfach wäre.
    Martin

    Antworten
  3. Hallo wenn ich nur einfach mal den test ausprobiere dann bekomme ich nur ein Fehler zurück.
    pi@raspberrypi:~ $ echo „Hello world email body“ | mail -s „Test Subject“ lars20mb@gmx.de
    mail: Nachricht kann nicht gesendet werden: Prozess wurde mit einem von Null verschiedenen Status beendet
    pi@raspberrypi:~ $

    was kann ich machen?
    Lars

    Antworten
      • Hallo,

        ich habe die so übernommen wie es oben beschrieben wird. Habe halt nur meine gmail adresse eingesetzt mit dem entsprechenden passwort.

        Muss ich etwas in /revaliases eintragen?

        Lars

  4. Nachdem ich meine Google einstellungen bei sichere APP auf unsicher geschaltet habe konnte ich einmalig eine Mail vom PI versenden, aber nun streickt das ganze.

    Unbekanntes Gerät
    Google hat eine Anmeldung über eine weniger sichere App verhindert.

    Nun muß ich mal schauen wie ich den PI als sicheres Gerät hinzufügen kann.

    Lars

    Antworten
  5. Das PHP Skript ist fehlerhaft und funktioniert so wie es ist nicht. Hier mein Vorschlag wie es richtig ist.

    >

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!