6 Stimmen

Stapelversand von E-Mails mit SwiftMailer

Ich verwende derzeit SwiftMailer um E-Mails an mehrere Benutzer (bis zu 50) zu versenden. Ich habe es einrichten und arbeiten richtig, aber ich bin nicht ganz sicher, wie die Empfänger aus meiner MySQL-Datenbank zu ziehen und iterieren, um sie zu senden.

Hier ist, was ich derzeit habe:

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

Wie Sie oben sehen können, möchte ich in setTo von meinen Benutzern in der Datenbank iterieren. Etwas wie:

SELECT first, last, email FROM users WHERE is_active=1

El Dokumentation Staaten:

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.

Aber ich bin mir nicht sicher: 1: Wie kann ich in diesem Skript aus meiner Datenbank auswählen und: 2: Wenn ich in meinem Fall die Methode addTo() verwenden müsste. Irgendwelche Vorschläge, wie man das richtig einrichtet?

Merci !

7voto

phidah Punkte 5513

Ich bin mir nicht ganz sicher, ob ich Ihre Frage richtig verstanden habe, aber hier ist eine Möglichkeit, es zu tun:

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

Ich hoffe, das ist das, was Sie wollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X