drupal_mail() - Massenversand und fehlerhafte E-Mail Einträge
am 14.06.2010 - 12:37 Uhr in
Hallo Community!
Ich habe für einen Kunden ein Newsletter System entwickelt, dass an momentan durchschnittlich 450 Benutzer eine Infomail pro Woche/Monat versendet. Dabei verwende Ich die drupal_mail Funktion. Bisher hat die Ausführung immer funktioniert, beim letzten automatisierten Versand allerdings, kamen ca. 115 MAILER DEAMON Failure Notice Mails (ich weiß leider noch nicht, ob jede Fehleremail einen unterschiedlichen Adressaten benennt, oder ob 115 Versuche, auf eine einzig fehlerhafte E-Mail Adresse zurückzuführen sind; finde ich noch raus) zurück:
Hi. This is the qmail-send program at xxx.de.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
BEISPIEL_MAIL@web.de:
xxx.xxx.xxx.xx does not like recipient.
Remote host said: 550 Benutzer nicht bekannt/User
unknown
Giving up on xxx.xxx.xxx.
Hinweis: Ich habe die E-Mail Adresse zu Demonstrationszwecken geändert auf Beispiel_Mail@... und die IPs verschleiert.
Ich habe über einen Mailcheck rausgefunden, dass die E-Mail Adresse zu diesem Eintrag nicht mehr funktioniert (wahrscheinlich Account gelöscht vom Benutzer). Dieser Fehler ist allerdings vorher noch nie aufgetreten.
Meine Strategie war jetzt erstmal, die E-Mail Adresse zu löschen (ob noch weitere nicht funktionierende Mails vorhanden sind, finde Ich noch raus). Aber wieso trat der Fehler jetzt erst auf? Bzw. wie verhindere Ich, dass eine fehlerhafte E-Mail Adresse einen MAILER DEAMON Bericht an den Kunden sendet? Der ist nämlich registriert auf dem Mail Server. Benutzt ihr für Newsletter vorher einen E-Mail Check, ob die Adresse noch existent ist?
Könnte es an einer Überschreitung der PHP Runtime liegen?
Hier noch zur Ergänzung die Funktion, die die Mails verschickt:
<?php
while ($data = db_fetch_object($res)) {
// example_mail() will be called based on the first drupal_mail() parameter.
$body = "BEISPIELTEXT";
$params = array(
'body' => $body,
'subject' => 'DER TITEL!',
);
drupal_mail('rad', 'weekly-nl', $data->email, language_default(), $params, $from, TRUE);
$receiver_count++;
}
?>
- Anmelden oder Registrieren um Kommentare zu schreiben
Verwende doch für den Versand
am 14.06.2010 - 12:51 Uhr
Verwende doch für den Versand den PHPmailer (http://drupal.org/project/phpmailer) und lasse und lass gebouncte Mails an einen anderen Empfänger umleiten, dann bekommt dein Kunde auch nichts von den Rückläufern mit.
Du solltest überlegen ob Du nicht ein automatisches Bounce Management entwickelst, was Dir entsprechend Deine Rückläufer bearbeitet.
Vielen Dank für deine
am 16.06.2010 - 22:49 Uhr
Vielen Dank für deine schnelle Antwort! Ich habe das PHPmailer Modul installiert, und auch Messaging und Notifications. Bevor Ich allerdings die Funktion groß abändern wollte, habe Ich nach einiger Recherche im $header-Teil meiner hook_mail Definition folgendes ausprobiert:
<?php
$headers = array(
'MIME-Version' => '1.0',
'Content-Type' => 'text/html; charset=iso-8859-1',
'X-Mailer' => 'Drupal',
'Errors-To' => 'Fehlerhandling-Adresse@xxx.de',
'Return-Path' => 'Fehlerhandling-Adresse@xxx.de'
);
?>
und in einem ersten Test sind auch tatsächlich die an eine falsche E-Mail Adresse versendeten E-Mails zu der Fehlerhandling-Adresse korrekt gemeldet worden. Ich warte jetzt noch den Live Test ab, und hoffe, es stürzt nicht alles zusammen (-;