Swiftmailer: PHP-Bibliothek zum Versenden vieler E-Mails

Kein Kommentar Autor: Jürgen (jdo)

Swiftmailer Screenshot WebseiteIn der heutigen Zeit muss man als Programmierer das Rad oftmals nicht mehr neu erfinden. Erstens existieren viele brauchbare Code-Schnipsel. Zweitens gibt es komplett fertige Bibliotheken oder Frameworks, die einem Entwickler das Leben sehr viel leichter machen. Eine von diesen ist Swiftmailer, mit der Sie einfach und komfortabel zum Beispiel eine Newsletter-Applikation schreiben können. Die Software ist eine Bibliothek für PHP 5, mit der sich E-Mails aus Applikationen via SMTP, Sendmail und der PHP-Mail-Funktion versenden lassen. Wie funktioniert das? Im Prinzip ganz einfach. Zunächst laden Sie Swiftmailer herunter. Danach entpacken Sie das Archiv und binden die Bibliothek wie unter PHP üblich ein:

require_once "/swift_required.php";

Als nächstes konfigurieren Sie die Art des Transports:

$transport = Swift_SendmailTransport::newInstance();

Hier haben Sie die Möglichkeit anzugeben, auf welche Weise die Applikation die Nachricht versenden soll. Das Beispiel hier verwendet Sendmail. Sie können auch SMTP mit Authentisierung und/oder Verschlüsselung verwenden. Weiterhin erlaubt die Software das Erstellen einer alternativen Transportmethode, sollte die bevorzugte nicht funktionieren. Eine Übersicht zu den verschiedenen Transportarten finden Sie in der Dokumentation des Projekts. Als dritten Schritt erstellen Sie eine neue Instanz:

$mailer = Swift_Mailer::newInstance($transport);

Da viele Mail-Server verhindern, dass eine Applikation mehr als 100 E-Mails gleichzeitig versendet, sei auf das AntiFlood-Plugin hingewiesen. Damit können Sie nach einer gewissen Anzahl von Mails die Applikation zu einer Wartezeit oder einer Neuanmeldung am Dienst zwingen. Ebenso hat der Mailserver Zeit, die Warteschlange abzuarbeiten. Im Beispiel hier weisen wir Swiftmailer an, nach 100 Mails eine Pause von 20 Sekunden einzulegen.

$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 20));

Nun ist es an der Zeit, Empfänger, Betreff und Nachricht festzulegen. Sie können zum Beispiel ein Array mit E-Mail-Adressen via foreach-Schleife abarbeiten:

foreach ($mail_array as $email_empfänger => $name) {
$message = Swift_Message::newInstance()
//Betreff setzen
->setSubject($betreff)
// Sende und Empfänger-Adressen mittels assozitativen Arrays setzen
->setFrom(array("newsletter@example.com" => "Example Newsletter"))
->setTo(array($email_empfänger => $name))
// Nachricht
->setBody($nachrichten_text])
// alternativen Mailkörper angeben
->addPart($nachrichten_text], "text/html");
// Nachricht senden
$result = $mailer->send($message);
}

Mittels setCc() oder setBcc() erlaubt swiftmailer ebenfalls das Versenden via Carbon Copy oder Blind Carbon Copy. Einen Anhang können Sie mit

->attach(Swift_Attachment::fromPath("mein-anhang.zip"))

schicken.

Das Projekt ist vorbildlich dokumentiert und mit vielen Beispielen versehen. Ein Blick ins Benutzerhandbuch lohnt sich. Die Entwickler haben sich eindeutig Gedanken gemacht. Somit lässt sich Swiftmailer unglaublich flexibel einsetzen. Man merkt es zum Beispiel am Throttler-Plugin, mit dem Sie die Anzahl der gesendeten E-Mails oder die Größe der Bytes pro Minute limitieren können. Die Bibliothek ist kostenlos und steht unter der LGPL.




 Alle Kommentare als Feed abonnieren

Kommentare sind geschlossen.