2010-11-23 12 views
0

Je développe un module newsletter sur mon site et je commence par la version 1.4 de Symfony. J'aimerais envoyer mes courriels à plusieurs destinataires.Module newsletter dans Symfony 1.4

J'ai essayé cette solution simple (avec la stratégie de livraison en temps réel):

$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); 

Le courriel a été envoyé, mais dans la liste des destinataires que vous pouvez voir tous les utilisateurs et non seulement vous ...

De plus, il est possible qu'il y ait beaucoup de destinataires. Alors peut-être que je vais avoir besoin d'une liste d'attente pour éviter une erreur de temps d'exécution maximale?

Pouvez-vous aider à trouver une meilleure solution avec exemple si c'est possible?

Merci

Répondre

1

Tout d'abord, pour cacher la liste des destinataires, vous devez utiliser la fonction setBcc() de Swiftmailer au lieu de setTo(). Cela ajoute les adresses e-mail en tant que repicients de copie aveugle-carbone, ce qui signifie qu'ils ne pourront pas "se voir" les uns les autres. En outre, ajoutez votre propre adresse (par exemple [email protected]) en tant qu'adresse setTo(). Deuxièmement, le temps d'exécution maximal ne sera pas un problème si vous ajoutez tous les recpients à un seul courrier électronique, car il ne se connectera au SMTP/mailer qu'une seule fois, lorsque vous appelez $ this-> getMailer () -> send ($ message). Je vous conseille cependant de regarder la fonctionnalité de spool, car elle offre de meilleures performances, et permet à un processus d'arrière-plan de prendre en charge l'emailing réel (vous ajoutez simplement à une table dans votre base de données et laissez-le attendre cronjob pour envoyer le mail). Changez votre code ci-dessus pour parcourir tous les destinataires et créer un e-mail pour chaque destinataire et l'ajouter au spool. De cette façon, vous pouvez également utiliser la fonction setTo() pour obtenir l'adresse correcte pour le destinataire.

En savoir plus sur la fonctionnalité de spool dans le manuel More With Symfony.

+0

Nous vous remercions de votre aide, c'est mieux! – deodys

Questions connexes