/**
  * @param $templateIdentifier
  * @param \GIB\GradingTool\Domain\Model\Project $project
  * @param \GIB\GradingTool\Domain\Model\ProjectManager $projectManager
  * @param string $recipientName
  * @param string $recipientEmail
  * @param string $additionalContent
  * @param array $attachements
  * @return bool|void
  */
 public function sendNotificationMail($templateIdentifier, \GIB\GradingTool\Domain\Model\Project $project, \GIB\GradingTool\Domain\Model\ProjectManager $projectManager = NULL, $recipientName = '', $recipientEmail = '', $additionalContent = '', $attachements = array())
 {
     if ($this->settings['email']['activateNotifications'] === FALSE) {
         return TRUE;
     }
     /** @var \GIB\GradingTool\Domain\Model\Template $template */
     $template = $this->templateRepository->findOneByTemplateIdentifier($templateIdentifier);
     $templateContentArray = unserialize($template->getContent());
     // some kind of wrapper of all e-mail templates containing the HTML structure and styles
     $beforeContent = Files::getFileContents($this->settings['email']['beforeContentTemplate']);
     $afterContent = Files::getFileContents($this->settings['email']['afterContentTemplate']);
     /** @var \TYPO3\Fluid\View\StandaloneView $emailView */
     $emailView = new \TYPO3\Fluid\View\StandaloneView();
     $emailView->setTemplateSource('<f:format.raw>' . $beforeContent . $templateContentArray['content'] . $afterContent . '</f:format.raw>');
     $emailView->setPartialRootPath(FLOW_PATH_PACKAGES . 'Application/GIB.GradingTool/Resources/Private/Partials');
     $emailView->setFormat('html');
     $emailView->assignMultiple(array('beforeContent' => $beforeContent, 'afterContent' => $afterContent, 'project' => $project, 'projectManager' => $projectManager, 'dataSheetContent' => $project->getDataSheetContentArray(), 'additionalContent' => $additionalContent));
     $emailBody = $emailView->render();
     /** @var \TYPO3\SwiftMailer\Message $email */
     $email = new Message();
     $email->setFrom(array($templateContentArray['senderEmail'] => $templateContentArray['senderName']));
     // the recipient e-mail can be overridden by method arguments
     if (!empty($recipientEmail)) {
         $email->setTo(array((string) $recipientEmail => (string) $recipientName));
         // in this case, send a bcc to the GIB team
         $email->setBcc(array($templateContentArray['senderEmail'] => $templateContentArray['senderName']));
     } else {
         $email->setTo(array($templateContentArray['recipientEmail'] => $templateContentArray['recipientName']));
     }
     if (!empty($attachements)) {
         foreach ($attachements as $attachement) {
             $email->attach(\Swift_Attachment::fromPath($attachement['source'])->setFilename($attachement['fileName']));
         }
     }
     $email->setSubject($templateContentArray['subject']);
     $email->setBody($emailBody, 'text/html');
     $email->send();
 }
Пример #2
0
 /**
  * @param string $key
  * @param Deployment $deployment
  * @param SurfCaptainDeployment $surfCaptainDeployment
  * @return void
  */
 protected function sendMail($key, Deployment $deployment, SurfCaptainDeployment $surfCaptainDeployment)
 {
     $settings = $this->getSettingsForFunction($key, $surfCaptainDeployment);
     $pathParts = pathinfo($settings['templatePathAndFilename']);
     $view = new StandaloneView();
     $view->setTemplatePathAndFilename($settings['templatePathAndFilename']);
     $view->setPartialRootPath($pathParts['dirname'] . '/Partials/');
     $view->setPartialRootPath($pathParts['dirname'] . '/Layouts/');
     $view->assign('deployment', $deployment)->assign('surfCaptainDeployment', $surfCaptainDeployment)->assign('settings', $settings);
     $enabled = trim($view->renderSection('Enabled'));
     if (empty($enabled)) {
         return;
     }
     switch (strtolower($pathParts['extension'])) {
         case 'txt':
             $format = 'text/plain';
             break;
         default:
             $format = 'text/html';
     }
     $mail = new Message();
     $mail->setFrom($settings['from'])->setTo($settings['to'])->setSubject(trim($view->renderSection('Subject')))->setBody(trim($view->renderSection('Body')), $format, 'utf-8');
     if (!empty($settings['cc'])) {
         $mail->setCc($settings['cc']);
     }
     if (!empty($settings['bcc'])) {
         $mail->setBcc($settings['bcc']);
     }
     $mail->send();
 }