/** * Given post data and an email message, populate the sender and account on the email message if possible. * Also add message recipients and any attachments. * @param array $postData * @param EmailMessage $emailMessage * @param User $userToSendMessagesFrom * @return boolean */ public static function resolveEmailMessageFromPostData(array &$postData, CreateEmailMessageForm $emailMessageForm, User $userToSendMessagesFrom) { $postVariableName = get_class($emailMessageForm); Yii::app()->emailHelper->loadOutboundSettingsFromUserEmailAccount($userToSendMessagesFrom); $toRecipients = explode(",", $postData[$postVariableName]['recipientsData']['to']); // Not Coding Standard static::attachRecipientsToMessage($toRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_TO); if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'cc') != null) { $ccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['cc']); // Not Coding Standard static::attachRecipientsToMessage($ccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_CC); } if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'bcc') != null) { $bccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['bcc']); // Not Coding Standard static::attachRecipientsToMessage($bccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_BCC); } if (isset($postData['filesIds'])) { static::attachFilesToMessage($postData['filesIds'], $emailMessageForm->getModel()); } $emailAccount = EmailAccount::getByUserAndName($userToSendMessagesFrom); $sender = new EmailMessageSender(); $sender->fromName = Yii::app()->emailHelper->fromName; $sender->fromAddress = Yii::app()->emailHelper->fromAddress; $sender->personOrAccount = $userToSendMessagesFrom; $emailMessageForm->sender = $sender; $emailMessageForm->account = $emailAccount; $emailMessageForm->content->textContent = EmailMessageUtil::resolveTextContent(ArrayUtil::getArrayValue($postData[$postVariableName]['content'], 'htmlContent'), null); $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME); $emailMessageForm->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX); return $emailMessageForm; }
protected function preFilter($filterChain) { $sendGridPluginEnabled = (bool) ZurmoConfigurationUtil::getByModuleName('SendGridModule', 'enableSendgrid'); try { if ($sendGridPluginEnabled) { SendGridEmailAccount::getByUserAndName(Yii::app()->user->userModel, null); } else { EmailAccount::getByUserAndName(Yii::app()->user->userModel); } } catch (NotFoundException $e) { $redirectUrl = Yii::app()->request->getParam('redirectUrl'); if ($sendGridPluginEnabled) { try { EmailAccount::getByUserAndName(Yii::app()->user->userModel); } catch (NotFoundException $ex) { $messageView = new NoUserEmailConfigurationYetView($redirectUrl); $view = new ModalView($this->controller, $messageView); Yii::app()->getClientScript()->setToAjaxMode(); echo $view->render(); return false; } } else { $messageView = new NoUserEmailConfigurationYetView($redirectUrl); $view = new ModalView($this->controller, $messageView); Yii::app()->getClientScript()->setToAjaxMode(); echo $view->render(); return false; } } return true; }
/** * Given post data and an email message, populate the sender and account on the email message if possible. * Also add message recipients and any attachments. * @param array $postData * @param CreateEmailMessageForm $emailMessageForm * @param User $userToSendMessagesFrom * @return CreateEmailMessageForm */ public static function resolveEmailMessageFromPostData(array &$postData, CreateEmailMessageForm $emailMessageForm, User $userToSendMessagesFrom) { $postVariableName = get_class($emailMessageForm); $toRecipients = explode(",", $postData[$postVariableName]['recipientsData']['to']); // Not Coding Standard static::attachRecipientsToMessage($toRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_TO); if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'cc') != null) { $ccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['cc']); // Not Coding Standard static::attachRecipientsToMessage($ccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_CC); } if (ArrayUtil::getArrayValue($postData[$postVariableName]['recipientsData'], 'bcc') != null) { $bccRecipients = explode(",", $postData[$postVariableName]['recipientsData']['bcc']); // Not Coding Standard static::attachRecipientsToMessage($bccRecipients, $emailMessageForm->getModel(), EmailMessageRecipient::TYPE_BCC); } if (isset($postData['filesIds'])) { static::attachFilesToMessage($postData['filesIds'], $emailMessageForm->getModel()); } $emailAccount = EmailAccount::getByUserAndName($userToSendMessagesFrom); $sender = new EmailMessageSender(); $sender->fromName = $emailAccount->fromName; $sender->fromAddress = $emailAccount->fromAddress; $sender->personsOrAccounts->add($userToSendMessagesFrom); $emailMessageForm->sender = $sender; $emailMessageForm->account = $emailAccount; $box = EmailBoxUtil::getDefaultEmailBoxByUser($userToSendMessagesFrom); $emailMessageForm->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX); return $emailMessageForm; }
public function renderInput($attr) { switch ($attr) { case 'password': echo X2Html::x2ActivePasswordField($this, $attr, $this->htmlOptions($attr), true); break; default: parent::renderInput($attr); } }
public function renderInput($attr) { switch ($attr) { case 'password': echo CHtml::activePasswordField($this, $attr, $this->htmlOptions($attr)); echo CHtml::label(Yii::t('app', 'Visible?'), 'visible', array('style' => 'display: inline')); echo CHtml::checkBox('visible', false, array('id' => 'password-visible', 'onchange' => 'js: x2.credManager.swapPasswordVisibility("#Credentials_auth_password")')); break; default: parent::renderInput($attr); } }
public function setUp() { parent::setUp(); $this->user = User::getByUsername('super'); Yii::app()->user->userModel = $this->user; EmailAccount::deleteAll(); EmailMessage::deleteAll(); EmailMessageContent::deleteAll(); EmailMessageSender::deleteAll(); EmailMessageRecipient::deleteAll(); EmailMessageSendError::deleteAll(); FileModel::deleteAll(); }
public function renderInput($attr) { switch ($attr) { case 'password': echo X2Html::x2ActivePasswordField($this, $attr, $this->htmlOptions($attr), true); break; case 'server': echo CHtml::activeDropDownList($this, 'server', $this->sesEndpoints, $this->htmlOptions($attr)); break; default: parent::renderInput($attr); } }
protected function preFilter($filterChain) { try { EmailAccount::getByUserAndName(Yii::app()->user->userModel); } catch (NotFoundException $e) { $redirectUrl = Yii::app()->request->getParam('redirectUrl'); $messageView = new NoUserEmailConfigurationYetView($redirectUrl); $view = new ModalView($this->controller, $messageView); Yii::app()->getClientScript()->setToAjaxMode(); echo $view->render(); return false; } return true; }
public function renderInput($attr) { switch ($attr) { case 'email': echo '<p class="fieldhelp-thin-small">' . Yii::t('app', '(example@gmail.com)') . '</p>'; echo CHtml::activeTextField($this, $attr, $this->htmlOptions($attr)); break; case 'password': echo X2Html::x2ActivePasswordField($this, $attr, $this->htmlOptions($attr), true); break; default: parent::renderInput($attr); } }
public function renderInput($attr) { switch ($attr) { case 'email': echo '<p class="fieldhelp-thin-small">' . Yii::t('app', '(example@gmail.com)') . '</p>'; echo CHtml::activeTextField($this, $attr, $this->htmlOptions($attr)); break; case 'password': echo CHtml::activePasswordField($this, $attr, $this->htmlOptions($attr)); echo CHtml::label(Yii::t('app', 'Visible?'), 'visible', array('style' => 'display: inline')); echo CHtml::checkBox('visible', false, array('id' => 'password-visible', 'onchange' => 'js: x2.credManager.swapPasswordVisibility("#Credentials_auth_password")')); break; default: parent::renderInput($attr); } }
public function setUp() { parent::setUp(); $this->user = User::getByUsername('super'); Yii::app()->user->userModel = $this->user; EmailAccount::deleteAll(); EmailMessage::deleteAll(); EmailMessageContent::deleteAll(); EmailMessageSender::deleteAll(); EmailMessageRecipient::deleteAll(); EmailMessageSendError::deleteAll(); FileModel::deleteAll(); if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped('Please fix the test email settings'); } }
/** * @param User $user * @param mixed $name null or String representing the email account name */ public static function getByUserAndName(User $user, $name = null) { if ($name == null) { $name = self::DEFAULT_NAME; } else { //For now Zurmo does not support multiple email accounts throw new NotSupportedException(); } assert('is_string($name)'); $bean = ZurmoRedBean::findOne(EmailAccount::getTableName(), "_user_id = ? AND name = ?", array($user->id, $name)); assert('$bean === false || $bean instanceof RedBean_OODBBean'); if ($bean === false) { throw new NotFoundException(); } else { $emailAccount = self::makeModel($bean); } return $emailAccount; }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $emailAccount = EmailAccount::resolveAndGetByUserAndName(Yii::app()->user->userModel); //So the email is configured $emailAccount->fromAddress = '*****@*****.**'; $saved = $emailAccount->save(); assert($saved); // Not Coding Standard //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); $contact = ContactTestHelper::createContactWithAccountByNameForOwner('superContact', $super, $account); $contact->primaryEmail = new Email(); $contact->primaryEmail->emailAddress = '*****@*****.**'; $saved = $contact->save(); assert($saved); // Not Coding Standard }
/** * Resolve mailer by email message. * @return \ZurmoSwiftMailer|\ZurmoSendGridMailer */ public function resolveMailer() { $apiUser = Yii::app()->sendGridEmailHelper->apiUsername; $apiPassword = Yii::app()->sendGridEmailHelper->apiPassword; $user = $this->emailMessage->owner; $defaultMailerClassName = static::resolveDefaultMailerClassName(); if ($user != null) { $this->sendGridEmailAccount = SendGridEmailAccount::resolveAndGetByUserAndName($user, null, false); $this->emailAccount = EmailAccount::resolveAndGetByUserAndName($user, null, false); } if ($this->sendGridPluginEnabled && $user != null) { //Should user settings be used if ($this->shouldSendGridUserSettingsBeUsed()) { return new ZurmoSendGridMailer($this->emailMessage, $this->sendGridEmailAccount); } else { //Check for personal settings if ($this->shouldCustomUserSettingsBeUsed()) { return new $defaultMailerClassName($this->emailMessage, $this->emailAccount); } else { if ($apiUser != null && $apiPassword != null) { $this->updateMailerDetailsForEmailMessage('sendgrid', 'global'); return new ZurmoSendGridMailer($this->emailMessage, null); } else { $this->updateMailerDetailsForEmailMessage('smtp', 'global'); return new $defaultMailerClassName($this->emailMessage, null); } } } } elseif ($user != null && $this->shouldCustomUserSettingsBeUsed() === true) { return new $defaultMailerClassName($this->emailMessage, $this->emailAccount); } elseif ($this->sendGridPluginEnabled && $apiUser != null && $apiPassword != null) { $this->updateMailerDetailsForEmailMessage('sendgrid', 'global'); return new ZurmoSendGridMailer($this->emailMessage, null); } else { $this->updateMailerDetailsForEmailMessage('smtp', 'global'); return new $defaultMailerClassName($this->emailMessage, null); } }
public function testResolveEmailMessageFromPostData() { $billy = User::getByUsername('billy'); Yii::app()->user->userModel = $billy; //Test with no users/person in recipients $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $postVariableName = get_class($emailMessageForm); $postData = array($postVariableName => array('recipientsData' => array('to' => 'a@zurmo.com,b@zurmo.com', 'cc' => 'c@zurmo.com,d@zurmo.com', 'bcc' => 'e@zurmo.com,f@zurmo.com'), 'subject' => 'Test Email From Post', 'content' => array('htmlContent' => 'This is a test email'))); $emailMessageForm = EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, $billy); //Message should have 6 recipients 2 of each type $this->assertEquals('6', count($emailMessageForm->getModel()->recipients)); $recipients = $emailMessageForm->getModel()->recipients; $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipients[0]->type); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipients[1]->type); $this->assertEquals(EmailMessageRecipient::TYPE_CC, $recipients[2]->type); $this->assertEquals(EmailMessageRecipient::TYPE_CC, $recipients[3]->type); $this->assertEquals(EmailMessageRecipient::TYPE_BCC, $recipients[4]->type); $this->assertEquals(EmailMessageRecipient::TYPE_BCC, $recipients[5]->type); $this->assertEquals('*****@*****.**', $recipients[0]->toAddress); $this->assertEquals('*****@*****.**', $recipients[1]->toAddress); $this->assertEquals('*****@*****.**', $recipients[2]->toAddress); $this->assertEquals('*****@*****.**', $recipients[3]->toAddress); $this->assertEquals('*****@*****.**', $recipients[4]->toAddress); $this->assertEquals('*****@*****.**', $recipients[5]->toAddress); $this->assertEquals('', $recipients[0]->toName); $this->assertEquals('', $recipients[1]->toName); $this->assertEquals('', $recipients[2]->toName); $this->assertEquals('', $recipients[3]->toName); $this->assertEquals('', $recipients[4]->toName); $this->assertEquals('', $recipients[5]->toName); //Recipients are not personOrAccount $this->assertCount(0, $recipients[0]->personsOrAccounts); $this->assertCount(0, $recipients[1]->personsOrAccounts); $this->assertCount(0, $recipients[2]->personsOrAccounts); $this->assertCount(0, $recipients[3]->personsOrAccounts); $this->assertCount(0, $recipients[4]->personsOrAccounts); $this->assertCount(0, $recipients[5]->personsOrAccounts); //The message should go to billy's box $this->assertEquals(EmailBox::USER_DEFAULT_NAME, $emailMessageForm->folder->emailBox->name); //The message should go to the default outbox folder $this->assertEquals(EmailFolder::getDefaultOutboxName(), $emailMessageForm->folder->name); $this->assertEquals(EmailFolder::TYPE_OUTBOX, $emailMessageForm->folder->type); //The sender should be populated with details from the users email account $emailAccount = EmailAccount::getByUserAndName($billy); $this->assertEquals($emailAccount->fromName, $emailMessageForm->sender->fromName); $this->assertEquals($emailAccount->fromAddress, $emailMessageForm->sender->fromAddress); //Test with null in cc/bcc $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $postVariableName = get_class($emailMessageForm); $postData = array($postVariableName => array('recipientsData' => array('to' => '*****@*****.**', 'cc' => null, 'bcc' => null), 'subject' => 'Test Email From Post', 'content' => array('htmlContent' => 'This is a test email'))); $emailMessageForm = EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, $billy); $this->assertEquals('1', count($emailMessageForm->getModel()->recipients)); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $emailMessageForm->getModel()->recipients[0]->type); $this->assertEquals('*****@*****.**', $emailMessageForm->getModel()->recipients[0]->toAddress); //Test with with contacts in recipients $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $postVariableName = get_class($emailMessageForm); $postData = array($postVariableName => array('recipientsData' => array('to' => '*****@*****.**', 'cc' => null, 'bcc' => null), 'subject' => 'Test Email From Post', 'content' => array('htmlContent' => 'This is a test email'))); $emailMessageForm = EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, $billy); $this->assertEquals('1', count($emailMessageForm->getModel()->recipients)); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $emailMessageForm->getModel()->recipients[0]->type); $this->assertEquals('*****@*****.**', $emailMessageForm->getModel()->recipients[0]->toAddress); $contacts = Contact::getByName('sally sallyson'); $this->assertTrue($emailMessageForm->getModel()->recipients[0]->personsOrAccounts[0]->isSame($contacts[0])); //Test with attachments $email = new Email(); $filesIds = array(); $fileDocx = ZurmoTestHelper::createFileModel('testNote.txt'); $filesIds[] = $fileDocx->id; $fileTxt = ZurmoTestHelper::createFileModel('testImage.png'); $filesIds[] = $fileTxt->id; $emailMessage = new EmailMessage(); $emailMessageForm = new CreateEmailMessageForm($emailMessage); $postVariableName = get_class($emailMessageForm); $postData = array($postVariableName => array('recipientsData' => array('to' => '*****@*****.**', 'cc' => null, 'bcc' => null), 'subject' => 'Test Email From Post', 'content' => array('htmlContent' => 'This is a test email')), 'filesIds' => $filesIds); $emailMessageForm = EmailMessageUtil::resolveEmailMessageFromPostData($postData, $emailMessageForm, $billy); $this->assertEquals(2, count($emailMessageForm->getModel()->files)); }
/** * Load user's outbound settings from user's email account or the system settings * @param User $user * @param string $name EmailAccount name or null for default name */ public function loadOutboundSettingsFromUserEmailAccount(User $user, $name = null) { $userEmailAccount = EmailAccount::getByUserAndName($user, $name); if ($userEmailAccount->useCustomOutboundSettings == EmailMessageUtil::OUTBOUND_PERSONAL_SMTP_SETTINGS) { $settingsToLoad = array_merge(static::$settingsToLoad, array('fromName', 'fromAddress')); foreach ($settingsToLoad as $keyName) { if ($keyName == 'outboundPassword') { $keyValue = ZurmoPasswordSecurityUtil::decrypt($userEmailAccount->{$keyName}); $this->{$keyName} = $keyValue; } else { $this->{$keyName} = $userEmailAccount->{$keyName}; } } } else { $this->loadOutboundSettings(); $this->fromName = strval($user); $this->fromAddress = $this->resolveFromAddressByUser($user); } }
public function testSendMessagePopulatesEmailAccountSettings() { $jane = User::getByUsername('jane'); Yii::app()->user->userModel = $jane; $emailHelper = new EmailHelper(); EmailMessageTestHelper::createEmailAccount($jane); $emailAccount = EmailAccount::getByUserAndName($jane); $emailAccount->useCustomOutboundSettings = EmailMessageUtil::OUTBOUND_PERSONAL_SMTP_SETTINGS; $emailAccount->outboundType = 'abc'; $emailAccount->outboundPort = 11; $emailAccount->outboundHost = 'dumb.domain'; $emailAccount->outboundUsername = '******'; $emailAccount->outboundPassword = '******'; $emailAccount->outboundSecurity = 'ssl'; $emailAccount->save(); $emailMessage = EmailMessageTestHelper::createOutboxEmail($jane, 'Test email', 'Raw content', 'Html content', 'Zurmo', Yii::app()->emailHelper->outboundUsername, 'John Doe', Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']); $emailMessage->account = $emailAccount; $emailMessage->save(); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); Yii::app()->emailHelper->sendQueued(); $job = new ProcessOutboundEmailJob(); $this->assertTrue($job->run()); //Since user email account has invalid settings message is not sent $this->assertContains('Connection could not be established with host dumb.domain', strval($emailMessage->error)); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(0, Yii::app()->emailHelper->getSentCount()); }
public static function createEmailAccount(User $user) { $emailAccount = new EmailAccount(); $emailAccount->user = $user; $emailAccount->name = EmailAccount::DEFAULT_NAME; $emailAccount->fromName = $user->getFullName(); $emailAccount->fromAddress = '*****@*****.**'; $emailAccount->useCustomOutboundSettings = false; $emailAccount->outboundType = 'smtp'; $emailAccount->save(); }
public function testCrudForHasOneAndHasManyEmailAccountRelations() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $emailAccount = EmailAccount::resolveAndGetByUserAndName($super); $emailAccountId = $emailAccount->id; $emailAccount->forgetAll(); //Check read hasOne relation $emailAccount = EmailAccount::getById($emailAccountId); $user = $emailAccount->user; $this->assertEquals($super->username, $user->username); //Check update hasOne relation $user = User::getByUsername('billy'); $emailAccount->user = $user; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertEquals('billy', $emailAccount->user->username); //Check delete hasOne relation $emailAccount->user = null; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertLessThan(0, $emailAccount->user->id); //Check create and read hasMany relation model $emailMessage = EmailMessageTestHelper::createDraftSystemEmail('first test email', $user); $emailAccount->messages->add($emailMessage); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals('first test email', $emailAccount->messages[0]->subject); //Check update hasMany relation $emailMessage = $emailAccount->messages[0]; $emailMessage->subject = 'first test email modified'; $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals($emailMessage->subject, $emailAccount->messages[0]->subject); //Check add and read another hasMany relation model $emailMessage2 = EmailMessageTestHelper::createDraftSystemEmail('second test email', $user); $emailAccount->messages->add($emailMessage2); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(2, $emailAccount->messages); $this->assertEquals($emailMessage2->subject, $emailAccount->messages[1]->subject); //Check delete hasMany relation first model $emailAccount->messages->remove($emailMessage); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(1, $emailAccount->messages); $this->assertEquals($emailMessage2->subject, $emailAccount->messages[0]->subject); //Check delete last hasMany relation model $emailAccount->messages->remove($emailMessage2); $this->assertTrue($emailAccount->save()); $emailAccount->forgetAll(); $emailAccount = EmailAccount::getById($emailAccountId); $this->assertCount(0, $emailAccount->messages); }
/** * @depends testLoadOutboundSettings */ public function testLoadOutboundSettingsFromUserEmailAccount() { $billy = User::getByUsername('billy'); Yii::app()->user->userModel = $billy; $emailHelper = new EmailHelper(); //Load outbound setting when no EmailAccount was created try { $emailHelper->loadOutboundSettingsFromUserEmailAccount($billy); } catch (NotFoundException $e) { $this->addToAssertionCount(1); } //Load outbound setting when EmailAccount useCustomOutboundSettings = false EmailMessageTestHelper::createEmailAccount($billy); $emailHelper->loadOutboundSettingsFromUserEmailAccount($billy); $this->assertEquals('smtp', $emailHelper->outboundType); $this->assertEquals(25, $emailHelper->outboundPort); $this->assertEquals('xxx', $emailHelper->outboundHost); $this->assertNull($emailHelper->outboundUsername); $this->assertNull($emailHelper->outboundPassword); $this->assertNull($emailHelper->outboundSecurity); $this->assertEquals($emailHelper->defaultTestToAddress, $emailHelper->fromAddress); $this->assertEquals(strval($billy), $emailHelper->fromName); //Load outbound setting when EmailAccount useCustomOutboundSettings = true $emailAccount = EmailAccount::getByUserAndName($billy); $emailAccount->useCustomOutboundSettings = true; $emailAccount->outboundType = 'xyz'; $emailAccount->outboundPort = 55; $emailAccount->outboundHost = 'zurmo.com'; $emailAccount->outboundUsername = '******'; $emailAccount->outboundPassword = '******'; $emailAccount->outboundSecurity = 'ssl'; $emailAccount->save(); $emailHelper->loadOutboundSettingsFromUserEmailAccount($billy); $this->assertEquals('xyz', $emailHelper->outboundType); $this->assertEquals(55, $emailHelper->outboundPort); $this->assertEquals('zurmo.com', $emailHelper->outboundHost); $this->assertEquals('billy', $emailHelper->outboundUsername); $this->assertEquals('billypass', $emailHelper->outboundPassword); $this->assertEquals('ssl', $emailHelper->outboundSecurity); $this->assertEquals($billy->getFullName(), $emailHelper->fromName); $this->assertEquals('*****@*****.**', $emailHelper->fromAddress); }
public function actionEmailConfiguration($id, $redirectUrl = null) { UserAccessUtil::resolveCanCurrentUserAccessAction(intval($id)); $user = User::getById(intval($id)); UserAccessUtil::resolveCanCurrentUserAccessRootUser($user); UserAccessUtil::resolveAccessingASystemUser($user); $title = Zurmo::t('EmailMessagesModule', 'Email Configuration'); $breadCrumbLinks = array(strval($user) => array('default/details', 'id' => $id), $title); $emailAccount = EmailAccount::resolveAndGetByUserAndName($user); $userEmailConfigurationForm = new UserEmailConfigurationForm($emailAccount); $userEmailConfigurationForm->emailSignatureHtmlContent = $user->getEmailSignature()->htmlContent; $postVariableName = get_class($userEmailConfigurationForm); if (isset($_POST[$postVariableName])) { $userEmailConfigurationForm->setAttributes($_POST[$postVariableName]); if ($userEmailConfigurationForm->validate()) { $userEmailConfigurationForm->save(); Yii::app()->user->setFlash('notification', Zurmo::t('UsersModule', 'User email configuration saved successfully.')); if ($redirectUrl != null) { $this->redirect($redirectUrl); } else { $this->redirect(array($this->getId() . '/details', 'id' => $user->id)); } } else { $userEmailConfigurationForm->outboundPassword = ZurmoPasswordSecurityUtil::decrypt($userEmailConfigurationForm->outboundPassword); } } $titleBarAndEditView = new UserActionBarAndEmailConfigurationEditView($this->getId(), $this->getModule()->getId(), $user, $userEmailConfigurationForm); $titleBarAndEditView->setCssClasses(array('AdministrativeArea')); $view = new UsersPageView($this->resolveZurmoDefaultOrAdminView($titleBarAndEditView, $breadCrumbLinks, 'UserBreadCrumbView')); echo $view->render(); }
public static function createEmailAccountForMailerFactory(User $user, $useCustomSetting = null) { if ($useCustomSetting == null) { $useCustomSetting = EmailMessageUtil::OUTBOUND_GLOBAL_SETTINGS; } $emailAccount = new EmailAccount(); $emailAccount->user = $user; $emailAccount->name = EmailAccount::DEFAULT_NAME; $emailAccount->fromName = $user->getFullName(); $emailAccount->fromAddress = '*****@*****.**'; $emailAccount->useCustomOutboundSettings = $useCustomSetting; $emailAccount->outboundType = 'smtp'; $emailAccount->outboundHost = Yii::app()->params['emailTestAccounts']['userSmtpSettings']['outboundHost']; $emailAccount->outboundPort = Yii::app()->params['emailTestAccounts']['userSmtpSettings']['outboundPort']; $emailAccount->outboundUsername = Yii::app()->params['emailTestAccounts']['userSmtpSettings']['outboundUsername']; $emailAccount->outboundPassword = Yii::app()->params['emailTestAccounts']['userSmtpSettings']['outboundPassword']; $emailAccount->outboundSecurity = Yii::app()->params['emailTestAccounts']['userSmtpSettings']['outboundSecurity']; $emailAccount->save(); }