Kategorien
PHP

PHP verhindern eines Email Loops bei Mail Auto Respondern (Endlosschleife)

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:

  1. dem Abrufen der Emails aus dem Postfach
  2. dem Speichern in der Datenbank der Mail-Daten
  3. 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();
}