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.
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é
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é
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
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/oderX-Mailer
und/oderCC
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"
.