示例#1
0
文件: Message.php 项目: cawaphp/email
 /**
  * {@inheritdoc}
  *
  * @return $this|self
  */
 public function setDescription($description) : self
 {
     $this->message->setDescription($description);
     return $this;
 }
 /**
  * Render a message for the given recipient.
  *
  * @param RecipientInterface $recipient
  * @param array              $additionalData
  *
  * @return \Avisota\Message\MessageInterface
  * @internal param array $newsletterData Additional newsletter data.
  *
  * @internal param RecipientInterface $recipientEmail The main recipient.
  * @SuppressWarnings(PHPMD.Superglobals)
  */
 public function render(RecipientInterface $recipient = null, array $additionalData = array())
 {
     /** @var EventDispatcher $eventDispatcher */
     $eventDispatcher = $GLOBALS['container']['event-dispatcher'];
     // dispatch a pre render event
     $event = new PreRenderMessageTemplateEvent($this->message, $this, $recipient, $additionalData);
     $eventDispatcher->dispatch($event::NAME, $event);
     // fetch updates on additional data
     $additionalData = $event->getAdditionalData();
     $content = $this->parseContent($recipient, $additionalData);
     $swiftMessage = new \Swift_Message();
     $name = trim($recipient->get('forename') . ' ' . $recipient->get('surname'));
     $swiftMessage->setTo($recipient->getEmail(), $name);
     $swiftMessage->setSubject($this->message->getSubject());
     $swiftMessage->setBody($content, $this->getContentType(), $this->getContentEncoding());
     $swiftMessage->setDescription($this->message->getDescription());
     if ($this->message->getAddFile()) {
         $files = deserialize($this->message->getFiles(), true);
         foreach ($files as $file) {
             $file = \Compat::resolveFile($file);
             if ($file) {
                 $attachment = \Swift_Attachment::fromPath(TL_ROOT . '/' . $file);
                 $swiftMessage->attach($attachment);
             }
         }
     }
     $message = new ContaoAwareNativeMessage($swiftMessage, $this->message, array($recipient));
     // dispatch a post render event
     $event = new PostRenderMessageTemplateEvent($this->message, $this, $recipient, $additionalData, $message);
     $eventDispatcher->dispatch($event::NAME, $event);
     return $message;
 }