/** * 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; }