/**
  * Send a test email.
  * $from('name' => 'fromName', 'address' => 'fromAddress')
  * @param EmailHelper $emailHelper
  * @param Array $from
  * @param string $toAddress
  */
 public static function sendTestEmail(EmailHelper $emailHelper, array $from, $toAddress)
 {
     assert('is_string($from["name"])');
     assert('is_string($from["address"])');
     $emailMessage = new EmailMessage();
     $emailMessage->owner = Yii::app()->user->userModel;
     $emailMessage->subject = Zurmo::t('EmailMessagesModule', 'A test email from Zurmo', LabelUtil::getTranslationParamsForAllModules());
     $emailContent = new EmailMessageContent();
     $emailContent->textContent = EmailNotificationUtil::resolveNotificationTextTemplate(Zurmo::t('EmailMessagesModule', 'A test text message from Zurmo.', LabelUtil::getTranslationParamsForAllModules()));
     $emailContent->htmlContent = EmailNotificationUtil::resolveNotificationHtmlTemplate(Zurmo::t('EmailMessagesModule', 'A test text message from Zurmo.', LabelUtil::getTranslationParamsForAllModules()));
     $emailMessage->content = $emailContent;
     $sender = new EmailMessageSender();
     $sender->fromAddress = $from['address'];
     $sender->fromName = $from['name'];
     $emailMessage->sender = $sender;
     $recipient = new EmailMessageRecipient();
     $recipient->toAddress = $toAddress;
     $recipient->toName = 'Test Recipient';
     $recipient->type = EmailMessageRecipient::TYPE_TO;
     $emailMessage->recipients->add($recipient);
     $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME);
     $emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_DRAFT);
     $validated = $emailMessage->validate();
     if ($validated) {
         $emailHelper->sendImmediately($emailMessage);
     }
     return $emailMessage;
 }
 /**
  * Send Queued email messages.
  * @param EmailHelper $emailHelper
  * @param null $count
  * @param bool $excludePausedCampaignMessages
  * @return bool
  * @throws NotSupportedException
  */
 public static function sendQueued(EmailHelper $emailHelper, $count = null, $excludePausedCampaignMessages = true)
 {
     assert('is_int($count) || $count == null');
     $outboxQueuedMessages = EmailMessageUtil::getOutboundQueuedMessages($count, $excludePausedCampaignMessages);
     foreach ($outboxQueuedMessages as $emailMessage) {
         $emailHelper->sendImmediately($emailMessage);
     }
     $outboxErrorQueuedMessages = EmailMessageUtil::getOutboundErrorQueuedMessages($count, count($outboxQueuedMessages));
     foreach ($outboxErrorQueuedMessages as $emailMessage) {
         if ($emailMessage->sendAttempts < 3) {
             $emailHelper->sendImmediately($emailMessage);
         } else {
             $emailHelper->processMessageAsFailure($emailMessage);
         }
     }
     return true;
 }