protected function makeEmailMessage(Contact $contact, $subject = null) { $interval = mt_rand(4, 35) * 86400; if (!isset($subject)) { $subject = 'A test archived sent email'; } //#1 Create Archived - Sent $emailMessage = new EmailMessage(); $emailMessage->setScenario('importModel'); $emailMessage->owner = $contact->owner; $emailMessage->subject = $subject; $emailContent = new EmailMessageContent(); $emailContent->textContent = 'My First Message'; $emailContent->htmlContent = 'Some fake HTML content'; $emailMessage->content = $emailContent; //Sending is current user (super) $sender = new EmailMessageSender(); $sender->fromAddress = '*****@*****.**'; $sender->fromName = 'Super User'; $sender->personsOrAccounts->add(Yii::app()->user->userModel); $emailMessage->sender = $sender; //Recipient is BobMessage $recipient = new EmailMessageRecipient(); $recipient->toAddress = '*****@*****.**'; $recipient->toName = strval($contact); $recipient->personsOrAccounts->add($contact); $recipient->type = EmailMessageRecipient::TYPE_TO; $emailMessage->recipients->add($recipient); $emailMessage->folder = EmailFolder::getByBoxAndType($this->emailBox, EmailFolder::TYPE_SENT); $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - $interval); $emailMessage->sentDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - $interval + mt_rand(0, 3) * 86400); $emailMessage->addPermissions(Group::getByName(Group::EVERYONE_GROUP_NAME), Permission::READ_WRITE_CHANGE_PERMISSIONS_CHANGE_OWNER); $saved = $emailMessage->save(); if (!$saved) { throw new FailedToSaveModelException(); } $emailMessage = EmailMessage::getById($emailMessage->id); AllPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($emailMessage, Group::getByName(Group::EVERYONE_GROUP_NAME)); $emailMessage->save(); return $emailMessage; }