protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection(); ProjectConfiguration::setupMailer(); $queue_table = Doctrine::getTable('MailQueue'); $queue = $queue_table->getPending($arguments['limit']); $done = array(); $failed = array(); foreach ($queue as $item) { try { $mail = new Zend_Mail('utf-8'); $mail->setSubject($item['subject']); $mail->setBodyText($item['body']); array_map(array($mail, 'addTo'), explode(',', $item['recipients'])); $mail->send(); $done[] = $item['id']; } catch (Zend_Exception $e) { $failed[] = $item['id']; } } $queue_table->deleteItems($done); $queue_table->recordAttemps($failed); $this->logSection('mailer', sizeof($done) . ' emails sent'); $this->logSection('mailer', sizeof($failed) . ' emails failed'); }