Question

J'utilise actuellement SwiftMailer pour envoyer des courriers électroniques à plusieurs utilisateurs (jusqu'à 50). Je l’ai configuré et fonctionne correctement, mais je ne sais pas trop comment extraire les destinataires de ma base de données MySQL et les itérer pour les envoyer.

Voici ce que j'ai actuellement:

<?php  
require_once 'swift/lib/swift_required.php';
$mailer = Swift_Mailer::newInstance(
Swift_SmtpTransport::newInstance('smtp.connection.com', 25)  
->setUsername('myUserName')
->setPassword('myPassword')
 );

 $mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(9));

 $message = Swift_Message::newInstance()

  ->setSubject('Let\'s get together today.')

  ->setFrom(array('myfrom@domain.com' => 'From Me'))

  ->setTo(array('tom_jones@domain.com' => 'Tom Jones', 'jsmith@domain.com' => 'Jane Smith', 'j_doe@domain.com' => 'John Doe', 'bill_watson@domain.com' => 'Bill Watson',))

  ->setBody('Here is the message itself')
  ->addPart('<b>Test message being sent!!</b>', 'text/html')
   ;

  $numSent = $mailer->batchSend($message, $failures);

  printf("Sent %d messages\n", $numSent);

Comme vous pouvez le voir ci-dessus, dans le setTo, je voudrais faire une itération de mes utilisateurs dans la base de données. Quelque chose comme:

SELECT premier, dernier, email, depuis les utilisateurs WHERE is_active = 1

La documentation indique:

Remarque: plusieurs appels à setTo () n’ajouteront pas de nouveaux destinataires & # 8211; chaque appel annule les appels précédents. Si vous souhaitez ajouter des destinataires de manière itérative, utilisez la méthode addTo ().

Mais je ne suis pas sûr: 1: comment sélectionner dans mon script la base de données et: 2: si j'avais besoin d'utiliser addTo () méthode dans mon cas. Des suggestions sur la façon de configurer ceci correctement?

Merci!

Était-ce utile?

La solution

Je ne suis pas tout à fait sûr d'avoir bien compris votre question, mais voici une façon de le faire:

<?php
$message = Swift_Message::newInstance()
  ->setSubject('Let\'s get together today.')
  ->setFrom(array('myfrom@domain.com' => 'From Me'))
  ->setBody('Here is the message itself')
  ->addPart('<b>Test message being sent!!</b>', 'text/html')
;

$data = mysql_query('SELECT first, last, email FROM users WHERE is_active=1') or die(mysql_error());
while($row = mysql_fetch_assoc($data))
{
   $message->addTo($row['email'], $row['first'] . ' ' . $row['last']);
}

$message->batchSend();
?>

J'espère que c'est ce que vous vouliez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top