Batch Enviar e-mail com SwiftMailer
-
08-07-2019 - |
Pergunta
Atualmente estou usando SwiftMailer para enviar e-mails para vários usuários (até 50). Eu tê-lo configurado e funcionando corretamente, no entanto, eu não estou muito certo como puxar os destinatários da minha base de dados MySQL e repita para enviá-los.
Aqui está o que eu tenho atualmente:
<?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 você pode ver acima, na Setto, eu gostaria de iterate dos meus usuários no banco de dados. Algo como:
SELECT first, last, email FROM users WHERE is_active=1
estados The href="http://swiftmailer.org/docs/recipients-to" rel="noreferrer"> documentação :
Note: Multiple calls to setTo() will not add new recipients – each call overrides the previous calls. If you want to iteratively add recipients, use the addTo() method.
Mas, eu não tenho certeza: 1: Como escolher entre a minha datebase neste script e: 2: Se eu precisar usar o addTo () método no meu caso. Todas as sugestões sobre como configurá-lo corretamente?
Obrigado!
Solução
Eu não tenho a certeza que eu tenho a pergunta certa, mas aqui é uma maneira de fazê-lo:
<?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 isso é o que você queria.