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