/**
  * Get outbound error queued messages.
  * @param int $count
  * @param int $queuedEmailMessagesCount Count of messages in outbox already queued.
  */
 public static function getOutboundErrorQueuedMessages($count = null, $queuedEmailMessagesCount)
 {
     if ($count == null) {
         $queuedEmailMessages = EmailMessage::getByFolderType(EmailFolder::TYPE_OUTBOX_ERROR, null);
     } elseif ($queuedEmailMessagesCount < $count) {
         $queuedEmailMessages = EmailMessage::getByFolderType(EmailFolder::TYPE_OUTBOX_ERROR, $count - $queuedEmailMessagesCount);
     } else {
         $queuedEmailMessages = array();
     }
     return $queuedEmailMessages;
 }
 /**
  * Call this method to process all email Messages in the queue. This is typically called by a scheduled job
  * or cron.  This will process all emails in a TYPE_OUTBOX folder or TYPE_OUTBOX_ERROR folder. If the message
  * has already been sent 3 times then it will be moved to a failure folder.
  * @param bool|null $count
  * @return bool number of queued messages to be sent
  */
 public function sendQueued($count = null)
 {
     assert('is_int($count) || $count == null');
     $queuedEmailMessages = EmailMessage::getByFolderType(EmailFolder::TYPE_OUTBOX, $count);
     foreach ($queuedEmailMessages as $emailMessage) {
         $this->sendImmediately($emailMessage);
     }
     if ($count == null) {
         $queuedEmailMessages = EmailMessage::getByFolderType(EmailFolder::TYPE_OUTBOX_ERROR, null);
     } elseif (count($queuedEmailMessages) < $count) {
         $queuedEmailMessages = EmailMessage::getByFolderType(EmailFolder::TYPE_OUTBOX_ERROR, $count - count($queuedEmailMessages));
     } else {
         $queuedEmailMessages = array();
     }
     foreach ($queuedEmailMessages as $emailMessage) {
         if ($emailMessage->sendAttempts < 3) {
             $this->sendImmediately($emailMessage);
         } else {
             $this->processMessageAsFailure($emailMessage);
         }
     }
     return true;
 }