Pregunta

Actualmente estoy usando SwiftMailer para enviar correos electrónicos a varios usuarios (hasta 50). Lo tengo configurado y funcionando correctamente, sin embargo, no estoy muy seguro de cómo extraer los destinatarios de mi base de datos MySQL e iterar para enviarlos.

Esto es lo que tengo actualmente:

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

Como puede ver arriba, en setTo, me gustaría iterar desde mis usuarios en la base de datos. Algo así como:

SELECCIONE primero, último, correo electrónico de usuarios WHERE is_active = 1

La documentación establece:

Nota: Múltiples llamadas a setTo () no agregarán nuevos destinatarios; cada llamada anula las llamadas anteriores. Si desea agregar destinatarios de forma iterativa, use el método addTo ().

Pero no estoy seguro: 1: Cómo seleccionar de mi base de datos en este script y: 2: si tuviera que usar addTo () método en mi caso. ¿Alguna sugerencia sobre cómo configurar esto correctamente?

¡Gracias!

¿Fue útil?

Solución

No estoy seguro de haber respondido bien su pregunta, pero aquí hay una forma de hacerlo:

<?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();
?>

Espero que eso sea lo que querías.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top