示例#1
0
$t->diag('->flushQueue()');
$mailer = new sfMailer($dispatcher, array('delivery_strategy' => 'none'));
$mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body');
try {
    $mailer->flushQueue();
    $t->fail('->flushQueue() throws a LogicException exception if the delivery_strategy is not spool');
} catch (LogicException $e) {
    $t->pass('->flushQueue() throws a LogicException exception if the delivery_strategy is not spool');
}
$mailer = new sfMailer($dispatcher, array('delivery_strategy' => 'spool', 'spool_class' => 'TestSpool', 'spool_arguments' => array('TestMailMessage'), 'transport' => array('class' => 'TestMailerTransport')));
$transport = $mailer->getRealtimeTransport();
$spool = $mailer->getTransport()->getSpool();
$mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body');
$t->is($spool->getQueuedCount(), 1, '->flushQueue() sends messages in the spool');
$t->is($transport->getSentCount(), 0, '->flushQueue() sends messages in the spool');
$mailer->flushQueue();
$t->is($spool->getQueuedCount(), 0, '->flushQueue() sends messages in the spool');
$t->is($transport->getSentCount(), 1, '->flushQueue() sends messages in the spool');
// ->sendNextImmediately()
$t->diag('->sendNextImmediately()');
$mailer = new sfMailer($dispatcher, array('logging' => true, 'delivery_strategy' => 'spool', 'spool_class' => 'TestSpool', 'spool_arguments' => array('TestMailMessage'), 'transport' => array('class' => 'TestMailerTransport')));
$transport = $mailer->getRealtimeTransport();
$spool = $mailer->getTransport()->getSpool();
$t->is($mailer->sendNextImmediately(), $mailer, '->sendNextImmediately() implements a fluid interface');
$mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body');
$t->is($spool->getQueuedCount(), 0, '->sendNextImmediately() bypasses the spool');
$t->is($transport->getSentCount(), 1, '->sendNextImmediately() bypasses the spool');
$transport->reset();
$spool->reset();
$mailer->composeAndSend('*****@*****.**', '*****@*****.**', 'Subject', 'Body');
$t->is($spool->getQueuedCount(), 1, '->sendNextImmediately() bypasses the spool but only for the very next message');