Hello,

Quel méthode utilisez vous pour l'envoie massif de mails avec votre applic sf ?

Plusieurs pistes possibles :

envoie du mail à chaque passage de la boucle

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?php
foreach ($destinataires as $email) {
    $message->SetTo($email);
    $this->getMailer()->send($message);
?>
Quand 3000 mails doivent partir la page charge charge...

Jouer avec un envoie tous les x passages

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
$i=0;
foreach ($destinataires as $email) {
 $message->AddBcc($email);
  if ($i > 80) {    
    $this->getMailer()->send($message);
    $i= 0;   
  }
$i++;
 } 
$this->getMailer()->send($message);
Trop tordu ?

Utiliser le batchSend de swiftMail ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?php
$message->SetTo($destinataires);  
$this->getMailer()->batchSend($message);
?>
Est-ce que ça apporte quelque chose par rapport à la première solution ?

Mettre en place un cron sur le serveur qui va
exécuter la tâche de sf tous les jours tous les quart d'heures

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
php symfony project:send-emails --env=production --message-limit=80
Ca semble le plus logique,
mais quand il s'agit d'un envoie de mails tous les 2 mois sans date fixe d'envoie, est-ce que ça a encore un sens ?

Exécuter manuellement la tâche depuis actions.class.php ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<?php
public function taskEmail() {
        chdir(sfConfig::get('sf_root_dir')); // Trick plugin into thinking you are in a project directory
        $task = new sfProjectSendEmailsTask($this->dispatcher, new sfFormatter());
        $task->run(array(), array('env' => 'prod'));
    }
?>
Comment faites vous ?