Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function send(EmailCampaign $campaign, $entity, array $from, array $to)
 {
     $entityId = $this->doctrineHelper->getSingleEntityIdentifier($entity);
     $marketingList = $campaign->getMarketingList();
     /** @var EmailTemplate $template */
     $template = $campaign->getTransportSettings()->getSettingsBag()->get('template');
     list($subjectRendered, $templateRendered) = $this->emailRenderer->compileMessage($template, ['entity' => $entity]);
     $emailModel = new Email();
     $emailModel->setType($template->getType())->setFrom($this->buildFullEmailAddress($from))->setEntityClass($marketingList->getEntity())->setEntityId($entityId)->setTo($to)->setSubject($subjectRendered)->setBody($templateRendered);
     $this->processor->process($emailModel);
 }
Пример #2
0
 /**
  * Process form
  *
  * @param  Email $model
  * @return bool True on successful processing, false otherwise
  */
 public function process(Email $model)
 {
     $this->form->setData($model);
     if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
         $this->form->submit($this->request);
         if ($this->form->isValid()) {
             try {
                 $this->emailProcessor->process($model);
                 return true;
             } catch (\Exception $ex) {
                 $this->logger->error('Email sending failed.', ['exception' => $ex]);
                 $this->form->addError(new FormError($ex->getMessage()));
             }
         }
     }
     return false;
 }
Пример #3
0
 /**
  * @param EmailModel $email
  * @param EmailOrigin $origin
  */
 protected function sendEmailModel(EmailModel $email, EmailOrigin $origin = null)
 {
     try {
         $this->emailProcessor->process($email, $origin);
     } catch (Exception $ex) {
         $this->logger->error('Email sending failed.', ['exception' => $ex]);
     }
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 protected function executeAction($context)
 {
     $emailModel = new Email();
     $emailModel->setFrom($this->getEmailAddress($context, $this->options['from']));
     $to = array();
     foreach ($this->options['to'] as $email) {
         if ($email) {
             $to[] = $this->getEmailAddress($context, $email);
         }
     }
     $emailModel->setTo($to);
     $emailModel->setSubject($this->contextAccessor->getValue($context, $this->options['subject']));
     $emailModel->setBody($this->contextAccessor->getValue($context, $this->options['body']));
     $email = $this->emailProcessor->process($emailModel);
     if (array_key_exists('attribute', $this->options)) {
         $this->contextAccessor->setValue($context, $this->options['attribute'], $email);
     }
 }
Пример #5
0
 /**
  * Process form
  *
  * @param  Email $model
  * @return bool True on successful processing, false otherwise
  */
 public function process(Email $model)
 {
     if ($this->request->getMethod() === 'GET') {
         $this->initModel($model);
     }
     $this->form->setData($model);
     if (in_array($this->request->getMethod(), array('POST', 'PUT'))) {
         $this->form->submit($this->request);
         if ($this->form->isValid()) {
             try {
                 $this->emailProcessor->process($model);
                 return true;
             } catch (\Exception $ex) {
                 $this->logger->error('Email sending failed.', array('exception' => $ex));
                 $this->form->addError(new FormError($this->translator->trans('oro.email.handler.unable_to_send_email')));
             }
         }
     }
     return false;
 }
Пример #6
0
 /**
  * @param      $user
  * @param bool $withOrigin
  */
 protected function processWithOwner($user, $withOrigin = false)
 {
     $message = $this->getMockForAbstractClass('\\Swift_Mime_Message');
     $this->mailer->expects($this->once())->method('createMessage')->will($this->returnValue($message));
     $this->mailer->expects($this->once())->method('send')->with($message)->will($this->returnValue(true));
     $this->emailOwnerProvider->expects($this->once())->method('findEmailOwner')->with($this->em, '*****@*****.**')->will($this->returnValue($user));
     $email = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Email')->disableOriginalConstructor()->getMock();
     $this->emailEntityBuilder->expects($this->once())->method('email')->with('test', 'Test User <*****@*****.**>', ['*****@*****.**'])->will($this->returnValue($email));
     $body = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailBody')->disableOriginalConstructor()->getMock();
     $this->emailEntityBuilder->expects($this->once())->method('body')->with('test body', false, true)->will($this->returnValue($body));
     $batch = $this->getMock('Oro\\Bundle\\EmailBundle\\Builder\\EmailEntityBatchInterface');
     $this->emailEntityBuilder->expects($this->once())->method('getBatch')->will($this->returnValue($batch));
     $batch->expects($this->once())->method('persist')->with($this->identicalTo($this->em));
     $this->em->expects($this->once())->method('flush');
     if (!$withOrigin) {
         $this->emailProcessor = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Mailer\\Processor')->setConstructorArgs([$this->doctrineHelper, $this->mailer, new EmailAddressHelper(), $this->emailEntityBuilder, $this->emailOwnerProvider, $this->emailActivityManager])->setMethods(['createUserInternalOrigin'])->getMock();
         $this->emailProcessor->expects($this->once())->method('createUserInternalOrigin')->with($user)->will($this->returnValue($this->getTestOrigin()));
     }
     $model = $this->createEmailModel(array('from' => 'Test User <*****@*****.**>', 'to' => array('*****@*****.**'), 'subject' => 'test', 'body' => 'test body'));
     $this->emailProcessor->process($model);
 }
Пример #7
0
 /**
  * @dataProvider messageDataProvider
  * @param array $data
  * @param array $expectedMessageData
  * @param bool  $needConverting
  *
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testProcess($data, $expectedMessageData, $needConverting = false)
 {
     $message = new \Swift_Message();
     $this->emailOriginHelper->expects(self::once())->method('setEmailModel');
     $this->emailOriginHelper->expects(self::once())->method('findEmailOrigin')->will(self::returnValue($this->userEmailOrigin));
     $this->userEmailOrigin->expects($this->once())->method('isSmtpConfigured')->will($this->returnValue(true));
     $this->mailer->expects($this->once())->method('createMessage')->will($this->returnValue($message));
     $this->mailer->expects($this->once())->method('send')->with($message)->will($this->returnValue(true));
     $emailUser = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailUser')->setMethods(['addFolder', 'getEmail'])->getMock();
     $emailUser->expects($this->once())->method('addFolder');
     $email = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Email')->disableOriginalConstructor()->getMock();
     $emailUser->expects($this->any())->method('getEmail')->willReturn($email);
     $this->emailEntityBuilder->expects($this->once())->method('emailUser')->with($data['subject'], $data['from'], $data['to'], $this->isInstanceOf('DateTime'), $this->isInstanceOf('DateTime'), $this->isInstanceOf('DateTime'), \Oro\Bundle\EmailBundle\Entity\Email::NORMAL_IMPORTANCE, $data['cc'], $data['bcc'])->willReturn($emailUser);
     $body = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailBody')->disableOriginalConstructor()->getMock();
     $this->emailEntityBuilder->expects($this->once())->method('body')->will($this->returnValue($body));
     $batch = $this->getMock('Oro\\Bundle\\EmailBundle\\Builder\\EmailEntityBatchInterface');
     $this->emailEntityBuilder->expects($this->once())->method('getBatch')->will($this->returnValue($batch));
     $batch->expects($this->once())->method('persist')->with($this->identicalTo($this->em));
     $this->em->expects($this->once())->method('flush');
     $email->expects($this->any())->method('getEmailBody')->willReturn($body);
     if (!empty($data['entityClass']) && !empty($data['entityClass'])) {
         $targetEntity = new TestUser();
         $this->doctrineHelper->expects($this->exactly(0))->method('getEntity')->with($data['entityClass'], $data['entityId'])->will($this->returnValue($targetEntity));
         $this->emailActivityManager->expects($this->exactly(0))->method('addAssociation')->with($this->identicalTo($email), $this->identicalTo($targetEntity));
     }
     $model = $this->createEmailModel($data);
     $this->assertSame($emailUser, $this->emailProcessor->process($model));
     $this->assertEquals($expectedMessageData['from'], [$model->getFrom()]);
     $this->assertEquals($data['cc'], $model->getCc());
     $this->assertEquals($data['bcc'], $model->getBcc());
     $this->assertEquals($expectedMessageData['subject'], $model->getSubject());
     if ($needConverting) {
         $id = $model->getAttachments()->first()->getEmailAttachment()->getEmbeddedContentId();
         $this->assertEquals(sprintf($expectedMessageData['body'], 'cid:' . $id), $message->getBody());
     } else {
         $this->assertEquals($expectedMessageData['body'], $model->getBody());
     }
 }