2010-11-23 11 views
0

Ich entwickle ein Newsletter-Modul in meiner Website und ich beginne mit Symfony 1.4-Version. Ich möchte meine E-Mails an mehrere Empfänger senden.Newsletter-Modul in Symfony 1.4

habe ich versucht, diese einfache Lösung (mit der Echtzeit-Lieferstrategie):

$message = $this->getMailer()->compose(); 
$message->setSubject('My subject'); 
$message->setTo(array('[email protected]', '[email protected]')); 
$message->setFrom('[email protected]', 'Name of expeditor'); 
$html = $this->getPartial('module/action', array('var'=>$var)); 
$message->setBody($html, 'text/html'); 
$number = $this->getMailer()->send($message); 

Die E-Mail in der Liste des Empfängers gesendet wurde, aber Sie können Sie alle Benutzer und nicht nur sehen ...

Außerdem ist es möglich, dass es viele Empfänger gibt. Also brauche ich vielleicht eine Warteliste, um einen maximalen Ausführungszeitfehler zu vermeiden?

Können Sie helfen, eine bessere Lösung mit Beispiel zu finden, wenn es möglich ist?

Danke

Antwort

1

Zuerst die Empfängerliste verstecken Sie die setBcc() Funktion von Swiftmailer statt setTo() verwenden müssen. Dadurch werden die E-Mail-Adressen als Blind-Carbon-Copy-Repicients hinzugefügt, was bedeutet, dass sie sich nicht gegenseitig "sehen" können. Fügen Sie außerdem Ihre eigene Adresse (z. B. [email protected]) als die Adresse setTo() hinzu.

Zweitens ist die maximale Ausführungszeit kein Problem, wenn Sie alle Empfänger nur einer E-Mail hinzufügen, da sie nur einmal mit dem zugrunde liegenden SMTP/Mailer verbunden ist, wenn Sie $ this-> getMailer aufrufen () -> senden ($ Nachricht).

Ich möchte Sie jedoch raten bei der Spool-Funktionalität zu betrachten, da es viel bessere Leistung bietet, und lässt ein Hintergrundprozess des aktuellen E-Mailing kümmern (Sie in Ihrer Datenbank eine Tabelle fügen Sie einfach und lassen Sie es für die warten cronjob um die Mail zu senden). Ändern Sie den obigen Code, um alle Empfänger durchzugehen und eine E-Mail für jeden Empfänger zu erstellen und sie dem Spool hinzuzufügen. Auf diese Weise können Sie auch die Funktion setTo() verwenden, um die korrekte Zieladresse für den Empfänger anzuzeigen.

Lesen Sie mehr über die Spool-Funktionalität im More With Symfony Buch.

+0

Vielen Dank für Ihre Hilfe, es ist besser! – deodys

Verwandte Themen