Example #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);
 }
Example #2
0
 /**
  * Assert that transport is present.
  *
  * @return bool
  * @throws \RuntimeException
  */
 protected function assertTransport()
 {
     if (!$this->transport) {
         throw new \RuntimeException('Transport is required to perform send');
     }
     $transportSettings = $this->emailCampaign->getTransportSettings();
     if ($transportSettings) {
         $errors = $this->validator->validate($transportSettings);
         if (count($errors) > 0) {
             $this->logger->error('Email sending failed. Transport settings are not valid.');
             return false;
         }
     }
     return true;
 }
Example #3
0
 /**
  * @param EmailCampaign $entity
  * @return bool
  */
 protected function isManualSendAllowed(EmailCampaign $entity)
 {
     $sendAllowed = $entity->getSchedule() === EmailCampaign::SCHEDULE_MANUAL && !$entity->isSent();
     if ($sendAllowed) {
         $transportSettings = $entity->getTransportSettings();
         if ($transportSettings) {
             $validator = $this->get('validator');
             $errors = $validator->validate($transportSettings);
             $sendAllowed = count($errors) === 0;
         }
     }
     return $sendAllowed;
 }