2 Stimmen

Automatisierte Verteilerliste - PHP

Ich habe eine Anwendung auf meiner Website, bei der sich die Leute für den Erhalt von Newslettern anmelden können, und dann kann jemand in einer bezahlten Gruppe einen schreiben und sofort an alle schicken, die sich angemeldet haben...

...was bedeutet, dass ich einen effizienten Weg brauche, um eine Schleife durch meine Datenbank von Abonnenten zu machen und ihnen Kopien der E-Mail mit php zu schicken.

Natürlich gibt es die mail()-Funktion...., die ich in eine Schleife einbauen könnte... gibt es einen besseren Weg?

3voto

Sampson Punkte 258265

PEAR's Mail-Warteschlange ?

Die Klasse Mail_Queue legt Mails in einem temporären Container und wartet darauf, dass sie dem MTA (Mail Transport Agent) zugeführt werden, und sendet sie später (z.B. eine bestimmte Menge an Mails alle paar Minuten) per crontab oder auf andere Weise.

3voto

PaulBM Punkte 103

Sie können die BCC-Header-Option verwenden und eine E-Mail mit einer Blind Carbon Copy-Liste mit allen Abonnenten senden. Erstellen Sie also den BCC-String in der Schleife und senden Sie eine E-Mail mit mail()

Auszug aus dem PHP-Handbuch...

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

Ersetzen Sie 'Bcc: birthdaycheck@example.com' durch $mySubscribersList

1voto

Jasper Punkte 1798

Ich würde vorschlagen, einen Weg zu finden, um eine Schleife zu durchlaufen und sich zu merken, an wen Sie bereits eine E-Mail geschickt haben, denn wenn es eine große Liste von Personen wird, könnte Ihr Skript enden und Sie müssten es neu laden.

Ich habe es einmal mit AJAX gemacht, das gab mir eine großartige Möglichkeit zu verfolgen, wo ich im Sendeprozess war. Gezählt, wie viele Menschen zu mailen, setzen Sie die Ids in einem Array, hatte Javascript-Schleife und machen getrennte Anrufe auf eine php-Mail-Seite...

-edit- Sie können ein Skript in php haben, mit einer einfachen while-Schleife, aber dann sollten Sie eine Prüfung in der DB hinzufügen, um zu sehen, ob eine Mail bereits an eine Person gesendet wurde. Wenn das Skript den Speicherbedarf übersteigt, laden Sie einfach die Seite neu, und es wird nur an diejenigen gesendet, die es noch nicht erhalten haben...

1voto

warren Punkte 30258

In Anlehnung an die Antwort von @paulbm: Warum erstellen Sie nicht einen Alias auf Ihrem Server, der auf alle aktuellen E-Mail-Adressen verweist? Ein kurzes procmail-Skript kann verhindern, dass jemand anderes als ein autorisierter Absender den Alias verwendet.

Das würde den Versand von Mailings vereinfachen, und auch die Wiederherstellung der Liste mit neuen/geänderten E-Mail-Adressen wäre ziemlich einfach.

0voto

theomega Punkte 30922

Versuchen Sie phplist ( Homepage ) wenn Sie einen vollwertigen Newsletter- und Mailinglisten-Manager benötigen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X