PHP: Ausgabe eines Scripts per Mail versenden
Tutorial von Stefan Trost | Letztes Update am 19.01.2023 | Erstellt am 03.02.2015
In diesem Tutorial möchte ich euch einen Weg zeigen, wie ihr die Ausgabe eines PHP-Skripts per E-Mail versenden könnt. Nützlich kann dies zum Beispiel bei einem Cronjob sein, über dessen Arbeit und Ergebnis man eine Benachrichtigung erhalten möchte.
Die Ausgabe des Scripts möchten wir über Output-Buffering einfangen, zum Versenden der E-Mail benutzen wir die PHP-Funktion mail(). Eine mögliche Umsetzung könnte zum Beispiel ungefähr so aussehen:
// Mail Parameter $empf = 'empfaenger@example.com'; $abs = 'Absender Name <absender@example.com>'; $betreff = 'Betreff der E-Mail'; // Output Buffering starten ob_start(); // eine Ausgabe erzeugen echo "TEST"; // Inhalt des Buffers auslesen und in Variable speichern $msg = ob_get_contents(); // Output Buffering beenden ob_end_clean(); // Inhalt der Variable per Mail versenden $header = 'TO: ' . $empf . "\r\n"; $header .= 'FROM: ' . $abs . "\r\n"; mail($empf, $betreff, $msg, $header);
Schauen wir uns nun Schritt für Schritt an, was wir hier machen:
Allgemeine Variablen
Als erstes definieren wir uns einige Variablen für das Versenden der E-Mail wie Empfänger, Absender und Betreff, die im weiteren Scriptverlauf benutzt werden. Wir machen das am Anfang, damit wir das Script später schnell anpassen können ohne das ganze Script durchsuchen zu müssen. E-Mail-Adressen können entweder mit oder ohne einen Namen angegeben werden. Im Code sehen wir ein Beispiel für beide Varianten.
Output buffern
Anschließend starten wir das Output-Buffering mit ob_start(). Ab diesem Zeitpunkt wird jede potentielle Ausgabe (zum Beispiel über echo, var_dump oder angezeigte Fehlermeldungen) in einen internen Buffer geschrieben anstatt für eine Ausgabe gesendet zu werden. Entsprechend würden diese Ausgaben auch nicht im Browser sichtbar. Weitere Informationen und Details zum Output Buffering findet ihr hier. Nachdem das Output-Buffering gestartet ist, können beliebige Ausgaben folgen. Hier geben wir beispielhaft einfach nur den String "TEST" über echo aus, wir könnten aber auch jeden beliebigen anderen Code inklusive Scriptaufrufe ausführen.
Nach Abarbeitung des Scripts können wir den internen Buffer mit ob_get_contents() auslesen. Wir schreiben ihn hier in die Variable $msg und beenden anschließend mit ob_end_clean() das Output-Buffering. Ab diesem Moment funktioniert wieder alles wie gewöhnlich und Ausgaben würden zum Beispiel wieder an den Browser gesendet anstatt in den Buffer geschrieben.
E-Mail versenden
Nun haben wir alles was wir möchten und brauchen nur noch unsere E-Mail zu verschicken. Dazu bauen wir uns noch einen E-Mail-Header und benutzen ansonsten die Variablen für Absender, Empfänger und Betreff, die wir oben definiert haben. Das Versenden von Mails via PHP ist hier ausführlicher erklärt, falls jemand das Script noch anpassen möchte.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
PHP: Eine E-Mail versenden
Tutorial | 0 Kommentare
PHP: Ausgabe eines Scripts in Variable schreiben
Tutorial | 0 Kommentare
PHP Mail Funktion: UTF-8 Header in E-Mails
Info | 0 Kommentare
Wie man Spam Mails vermeidet
Tipp | 0 Kommentare
HTML5 Canvas als Bild an Server senden und speichern
Tutorial | 0 Kommentare
jQuery: HTML5 Canvas mit Ajax an Server senden
Tutorial | 0 Kommentare
XAMPP: SSL/HTTPS für lokale Projekte einrichten
Tutorial | 8 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.