public function testSendSystemEmail() { if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped(Zurmo::t('EmailMessagesModule', 'Test email settings are not configured in perInstanceTest.php file.')); } $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; Yii::app()->imap->connect(); EmailMessage::deleteAll(); // Expunge all emails from dropbox Yii::app()->imap->deleteMessages(true); $this->assertEquals(0, EmailMessage::getCount()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $subject = "System Message"; $textMessage = "System message content."; $htmlMessage = "<strong>System</strong> message content."; EmailMessageHelper::sendSystemEmail($subject, array(Yii::app()->imap->imapUsername), $textMessage, $htmlMessage); sleep(30); Yii::app()->imap->connect(); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(1, $imapStats->Nmsgs); $this->assertEquals(1, EmailMessage::getCount()); $emailMessages = EmailMessage::getAll(); $emailMessage = $emailMessages[0]; $this->assertEquals('System Message', $emailMessage->subject); $this->assertEquals('System message content.', trim($emailMessage->content->textContent)); $this->assertEquals('<strong>System</strong> message content.', trim($emailMessage->content->htmlContent)); $this->assertEquals(1, count($emailMessage->recipients)); foreach ($emailMessage->recipients as $recipient) { $this->assertEquals($recipient->toAddress, Yii::app()->imap->imapUsername); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipient->type); } }
/** * Resolve system message to be sent, and send it * @param string $messageType * @param ImapMessage $originalMessage * @return boolean * @throws NotSupportedException */ protected function resolveMessageSubjectAndContentAndSendSystemMessage($messageType, $originalMessage) { $sendNotification = false; switch ($messageType) { case "OwnerNotExist": $subject = Zurmo::t('EmailMessagesModule', 'Invalid email address'); $textContent = Zurmo::t('EmailMessagesModule', 'Email address does not exist in system') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email address does not exist in system') . "<br\\><br\\>" . $originalMessage->htmlBody; $sendNotification = true; break; case "SenderNotExtracted": $subject = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message"); $textContent = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message") . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message") . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "RecipientNotExtracted": $subject = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message"); $textContent = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message") . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message") . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "EmailMessageNotValidated": $subject = Zurmo::t('EmailMessagesModule', 'Email message could not be validated'); $textContent = Zurmo::t('EmailMessagesModule', 'Email message could not be validated') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email message could not be validated') . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "EmailMessageNotSaved": $subject = Zurmo::t('EmailMessagesModule', 'Email message could not be saved'); $textContent = Zurmo::t('EmailMessagesModule', 'Email message could not be saved') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email message could not be saved') . "<br\\><br\\>" . $originalMessage->htmlBody; break; default: throw new NotSupportedException(); } if ($sendNotification) { $notificationMessage = new NotificationMessage(); $notificationMessage->textContent = $textContent; $notificationMessage->htmlContent = DataUtil::purifyHtml($htmlContent); $rules = new EmailMessageOwnerNotExistNotificationRules(); NotificationsUtil::submit($notificationMessage, $rules); } else { return EmailMessageHelper::sendSystemEmail($subject, array($originalMessage->fromEmail), $textContent, $htmlContent); } }
/** * Resolve system message to be sent, and send it * @param string $messageType * @param ImapMessage $originalMessage * @return boolean * @throws NotSupportedException */ protected function resolveMessageSubjectAndContentAndSendSystemMessage($messageType, $originalMessage) { switch ($messageType) { case "OwnerNotExist": $subject = Zurmo::t('EmailMessagesModule', 'Invalid email address'); $textContent = Zurmo::t('EmailMessagesModule', 'Email address does not exist in system') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email address does not exist in system') . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "SenderNotExtracted": $subject = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message"); $textContent = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message") . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', "Sender info can't be extracted from email message") . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "RecipientNotExtracted": $subject = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message"); $textContent = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message") . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', "Recipient info can't be extracted from email message") . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "EmailMessageNotValidated": $subject = Zurmo::t('EmailMessagesModule', 'Email message could not be validated'); $textContent = Zurmo::t('EmailMessagesModule', 'Email message could not be validated') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email message could not be validated') . "<br\\><br\\>" . $originalMessage->htmlBody; break; case "EmailMessageNotSaved": $subject = Zurmo::t('EmailMessagesModule', 'Email message could not be saved'); $textContent = Zurmo::t('EmailMessagesModule', 'Email message could not be saved') . "\n\n" . $originalMessage->textBody; $htmlContent = Zurmo::t('EmailMessagesModule', 'Email message could not be saved') . "<br\\><br\\>" . $originalMessage->htmlBody; break; default: throw new NotSupportedException(); } return EmailMessageHelper::sendSystemEmail($subject, array($originalMessage->fromEmail), $textContent, $htmlContent); }