コード例 #1
0
 /**
  * @param EmailInterface $email
  * @param string         $locale
  */
 public function getTemplatesPreview(EmailInterface $email, $locale)
 {
     $email->setLocale($locale);
     $this->renderer->loadTemplates($email);
     $this->renderer->setStrictVariables(false);
     $this->templates['fromName'] = $email->getFromName($this->defaultEmail);
     $this->templates['subject'] = $email->getSubject();
     $this->templates['content'] = $email->getBody();
     $this->errors = array('subject' => null, 'from_name' => null, 'html_content' => null);
     $suffix = $email->getChecksum();
     foreach ($this->errors as $template => $error) {
         try {
             $this->renderer->renderTemplate(sprintf('%s_%s', $template, $suffix));
         } catch (\Twig_Error $e) {
             $this->errors[$template] = $e->getRawMessage();
         }
     }
     $this->renderer->setStrictVariables(true);
 }
コード例 #2
0
 /**
  * Create a swift message
  *
  * @param EmailInterface $email
  * @param mixed          $to
  * @param array          $parameters
  * @param string         $locale
  *
  * @return \Swift_Message
  */
 public function generateMessage(EmailInterface $email, $to, array $parameters = array(), $locale = null)
 {
     if (null === $locale) {
         $locale = $this->options['default_locale'];
     }
     if (is_object($to)) {
         $to = $this->getRecipient($to);
     }
     try {
         $email->setLocale($locale);
         $this->renderer->loadTemplates($email);
         $message = $this->createMessageInstance()->setSubject($this->renderTemplate('subject', $parameters, $email->getChecksum()))->setFrom($this->renderFromAddress($email, $parameters), $this->renderTemplate('from_name', $parameters, $email->getChecksum()))->setTo($to)->setBody($this->renderTemplate('html_content', $parameters, $email->getChecksum()), 'text/html');
         $textContent = $this->renderTemplate('text_content', $parameters, $email->getChecksum());
         if (null !== $textContent && '' !== $textContent) {
             $message->addPart($textContent, 'text/plain');
         }
         foreach ($email->getBccs() as $bcc) {
             $message->addBcc($bcc);
         }
         if (count($email->getHeaders()) > 0) {
             $headers = $message->getHeaders();
             foreach ($email->getHeaders() as $header) {
                 if (is_array($header) && isset($header['key'], $header['value'])) {
                     $headers->addTextHeader($header['key'], $header['value']);
                 }
             }
         }
     } catch (NoTranslationException $e) {
         $message = new NoTranslationMessage($email->getReference(), $locale);
         $message->setFrom($this->options['admin_email']);
         $message->setTo($this->options['admin_email']);
     } catch (\Twig_Error_Runtime $e) {
         $message = new UndefinedVariableMessage($e->getMessage(), $email->getReference());
         $message->setFrom($this->options['admin_email']);
         $message->setTo($this->options['admin_email']);
     } catch (\Twig_Error $e) {
         $message = new TwigErrorMessage($e->getRawMessage(), $email->getReference());
         $message->setFrom($this->options['admin_email']);
         $message->setTo($this->options['admin_email']);
     }
     return $message;
 }