EMail-Autoresponder

Wer kennt das nicht: Nachem man sich irgendwo registriert hat, Kontakt mit dem Support angefordert oder einen Newsletter abonniert hat, erhält man meistens eine automatisch generierte Mail mit Danksagungen oder Ankündigungen, dass der Support ein paar Tage zur Beantwortung braucht… oder ein paar Wochen.

Wer auf seinen Seiten ein PHP-basiertes Kontaktformular verwendet, kann dies auf einfach Weise um eine solche Auto-Antwort ergänzen. Das eignet sich auch super für eine Abwesenheitsnotiz währen des Urlaubes.

Schritt 1: Responder-Text erstellen

Zunächst legt man eine Textdatei mit dem Inhalt der automatischen Antwort an und speichert sie auf dem Webserver – der Einfachheit halber am besten im selben Verzeichnis in dem das normale EMail-Skript abgelegt ist. Als Dateiname empfiehlt sich z.B. „responder.txt“.

Der Inhalt dieser Textdatei könnte zum Beispiel sein:

Vielen Dank für Deine Mail.
Deine eMail-Adresse wurde in unseren Newsletter-Verteiler aufgenommen.

Wenn Du den Newsletter nicht mehr erhalten möchtest, sende bitte eine Mail an:
unsubscribe(at)irgendwas(dot)com

Schritt 2: Autoresponder einfügen

Nun geht es daran, die automatische Antwortmail zu generieren. Hierzu öffnet man das bestehende Mailskript, welches z.B. so aussehen könnte (nur als Beispiel – nicht für den Produktiveinsatz geeignet, da Eingaben nicht gecleant werden – siehe auch Anti-Header-Injection):

$betreff=$_POST['betreff'];
$email=$_POST['email'];
$message=$_POST['message'];
$message=rawurldecode($message);
$message=str_replace("+", " ", $message);

mail("meinemail@irgendeinserver.de", "$betreff", $message, 
"From: $email\nReply-To: $email\nX-Mailer: PHP/" . phpversion(). "\nCC:");

Nachdem nun die Mail auf dem Weg ist, geht es nun daran, die automatische Mail an den Besucher der Site zu generieren. Hierfür wird zunächst die zuvor erstelle Textdatei „responder.txt“ via PHP geöffnet, gelesen und anschliessend der Inhalt an den Absender ($email) gesendet:

// ... hier steht euer bisheriges Sende-Skript ...

//AUTORESPONDER
//Dateizeiger erstellen
$responderfile = "responder.txt";

//Datei oeffnen
$fd = fopen( $responderfile, "r" );

//Datei auslesen - Inhalt in $content speichern
$content = fread( $fd, filesize( $responderfile ) );

//Datei schliessen
fclose( $fd );

//Mail versenden
mail( "$email", "Besten Dank!", "$content\n\n",
"From:mail@deinedomain.de\n" );

Selbstverständlich könnte der Text des Autoresponders auch direkt im Skript festgelegt werden – allerdings hat die Auslagerung des Textes in eine externe Datei zwei entscheidende Vorteile:

  • Die Textdaien können auch von unbedarften Usern (z.B. eurem Endkunden) verändert werden, ohne dass ein Eingriff in das Skript nötig ist
  • Die externen Dateien können auch über ein bestehendes CMS bearbeitet werden, was den Komfort natürlich erheblich erhöht

Wer Tips oder Anregungen zur Verbesserung des Autoresponders hat, kann hier einen Kommentar hinterlassen.

7 Kommentare Schreibe einen Kommentar

  1. Hallo,
    Danke Ihnen für die großartigen
    Anleitung über Autoresponder
    Email.Meine Anfrage,wie kann ich die Autoresponder E-Mail Externe
    einbinden.Ich hatte auch dergleichen Autoresponder E-Mail
    erstellt,Absender Variable erzeugt
    Fehler,wird als nicht definiert ausgegeben.Ich hatte versucht mit
    Session oder mit Post Array die Absender Variable zu erzeugen,es
    hat nicht funktioniert.Für eine Lösung das Problem ,bin ich dankbar.
    Mfg
    Gast

    • Hallo,

      ohne Deinen Code zu kennen, ist es schwer zu sagen woran es liegt. Aber: Einige Hoster unterbinden den Versand von Mails an externe Adressen via PHP mail(). Vielleicht ist das das Problem? In diesem Fall muss der Mail-Versand dann via SMTP erfolgen, etwa mittels der PHPMailer-Bibliothek.

      Beste Grüße
      André

  2. Danke,
    Schneller Antwort,ich meine das
    Autoresponder mail Skript extern
    an E-mail einzubindenob möglich ist.Ich möchte nicht in selben Seite
    wo das E-Mail Skript gesendet wird
    unterbringen.
    Grüße
    Gast

    • Hallo,

      in der hier beschriebenen Lösung ist das nicht vorgesehen.
      Statt den Text aus einer Datei zu lesen, könnte der natürlich auch z.B. via CURL von einer externen Adressen abgerufen werden – dann wären der eigentliche Versand der E-Mail und der Autoresponder-Text voneinander getrennt. Mir ist nicht ganz klar, was Dein Ansatz bezweckt aber so könnte es gehen.

      Beste Grüße
      André

  3. Grüß,
    Das Autoresponder E-Mail auch extern anzubinden,funktioniert
    ohne Probleme,mit einer kleine
    Änderung in E-Mail gleich nach
    der Sendefunktion einfach mit
    include Pfad zum Autoresponder
    Skript eingebunden.Ic erhielt zwei
    Mal E-Mail Nachricht,einmal für
    Empfänger,einmal für Absender.
    Grüße
    Gast

  4. Hallo! danke für den Ansatz.
    Ich habe das selbe php Skript,autoresponder email wird gesendet,
    aber die eigentliche Nachricht habe ich nicht erhalten.Woran kann
    es liegen.
    Gruß
    Gast

    • Hallo,

      ich vermute dass es an den zusätzlichen E-Mail-Headern Reply-To und/oder X-Mailer und/oder CC liegt. Ersetze mal im ersten Teil des Skripts – in welchem die eigentliche Mail gesandt wird – das "From: $email\nReply-To: $email\nX-Mailer: PHP/" . phpversion(). "\nCC:" durch das Einfachere "From:mail@deinedomain.de\n".

Schreibe einen Kommentar

Personenbezogene Daten interessieren mich nicht – daher ist die Angabe von Name und E-Mail-Adresse freiwillig. Jedoch wird jeder Kommentar von mir geprüft, bevor er freigeschalten wird.