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);
     }
 }
예제 #3
0
 /**
  * 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);
 }