Witam
Tworzę właśnie z wykorzystaniem zestawu klas Swift Mailer moduł newslettera i napotkałem następujący problem - nie potrafię spersonalizować wiadomości wysyłanych za pomocą Swift_BatchMailer.
Mój kod:
  1. <?php
  2. $message =& new Swift_Message( $mail->title, $body, "text/html" );
  3.  
  4. $recipients =& new Swift_RecipientList();
  5. foreach ($emails as $email)
  6. $recipients->addTo($email->email, $email->email);
  7. }
  8.  
  9. $batch =& new Swift_BatchMailer($swift);
  10.  
  11. $batch->send($message, $recipients, config::item('newsletter.mail_from'));
  12. ?>

Moje pytanie czy wogóle możliwe jest wysyłanie w ten sposób spersonalizowanych wiadomości, czy należy podejść z innej strony.

//---- Edit -----
Problem rozwiązany, należy użyć pluginu Decorator:
  1. <?php
  2. $swift =& new Swift($conn);
  3.  
  4. $message =& new Swift_Message( $mail->title, $body, "text/html" );
  5.  
  6. $recipients =& new Swift_RecipientList();
  7. $replacements = array();
  8.  
  9. foreach ($emails as $email) {
  10. $recipients->addTo($email->email);
  11. $replacements[$email->email] = array('{unsubscribe}' => url::site('newsletter/unsubscribe/'.$email->token) );
  12. }
  13.  
  14. $swift->attachPlugin(new Swift_Plugin_Decorator($replacements), "decorator");
  15.  
  16. $batch =& new Swift_BatchMailer($swift);
  17.  
  18. $batch->send($message, $recipients, config::item('newsletter.mail_from'));
  19. ?>