/** * {@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); }
/** * 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; }
/** * @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; }