Ein typisches Problem bei automatischen E-Mail Antworten (Auto Respondern) ist, dass es zu einer Endlosschleife kommen kann, wenn automatisch auf E-Mails geantwortet wird und der Empfänger auch eine automatische E-Mail z.B. eine Abwesenheits-Urlaubs E-Mail verschickt. Das Phänomen nennt man Email Loop.
Der Email Loop kann nur verhindert werden durch ein festgelegtes Limit an Nachrichten an denselben Adressaten. Man sollte z.B: festlegen, dass pro Tag nur eine E-Mail an einen Adressaten geschickt wird per Auto-Responder und dies mittels einer Datenbank checken.
Die Datenbank Abfrage für alle E-Mails, die nicht älter als einen Tag sind und schon beantwortet worden sind, könnte so aussehen:
$sql = "SELECT COUNT(response_sent) FROM autoresponder WHERE email='{$email}' AND date_received > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 day)) AND response_sent=1";
Ein Auto-Responder in PHP besteht aus 3 Teilen:
- dem Abrufen der Emails aus dem Postfach
- dem Speichern in der Datenbank der Mail-Daten
- dem Antworten auf E-Mails
Wenn man einen Auto-Responder nicht gleich als solchen enttarnen will, weil sofort eine Antwort geschickt, wollte man einen Cronjob einrichten, der zufällig bestimmt mit einer bestimmten Wahrscheinlichkeit, ob eine E-Mail beantwortet wird oder nicht.
z.B. mit einer Wahrscheinlichkeit von 10%:
if(rand(0, 1) <= 0.1) { answerMail(); }