66 Stimmen

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.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware 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

Wie man Spam Mails vermeidet

Tipp | 0 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.