/**
  * @param string $templateIdentifier name of the email template to use @see renderEmailBody()
  * @param string $subject subject of the email
  * @param array $sender sender of the email in the format array('<emailAddress>' => '<name>')
  * @param array $recipient recipient of the email in the format array('<emailAddress>' => '<name>')
  * @param array $variables variables that will be available in the email template. in the format array('<key>' => '<value>', ....)
  * @return boolean TRUE on success, otherwise FALSE
  */
 public function sendTemplateBasedEmail($templateIdentifier, $subject, array $sender, array $recipient, array $variables = [])
 {
     $plaintextBody = $this->renderEmailBody($templateIdentifier, 'txt', $variables);
     $htmlBody = $this->renderEmailBody($templateIdentifier, 'html', $variables);
     $mail = new Message();
     $mail->setFrom($sender)->setTo($recipient)->setSubject($subject)->setBody($plaintextBody)->addPart($htmlBody, 'text/html');
     return $this->sendMail($mail);
 }
Beispiel #2
0
 /**
  * @param Account $account
  * @return void
  */
 protected function sendNotificationMail(Account $account)
 {
     $notificationMailSettings = $this->settings['notificationMail'];
     if (!$notificationMailSettings['to']) {
         return;
     }
     $httpRequest = Request::createFromEnvironment();
     $failedAttemptsThreshold = $this->settings['failedAttemptsThreshold'];
     $time = (new \DateTime())->format('Y-m-d H:i');
     $replacePlaceholders = function ($string) use($account, $httpRequest, $failedAttemptsThreshold, $time) {
         return str_replace(['{domain}', '{ip}', '{userAgent}', '{accountIdentifier}', '{failedAttemptsThreshold}', '{time}'], [$httpRequest->getUri()->getHost(), $httpRequest->getClientIpAddress(), $_SERVER['HTTP_USER_AGENT'], $account->getAccountIdentifier(), $failedAttemptsThreshold, $time], $string);
     };
     $mail = new Message();
     $mail->setFrom($replacePlaceholders($notificationMailSettings['from']['email']), $replacePlaceholders($notificationMailSettings['from']['name']))->setTo($notificationMailSettings['to'])->setSubject($replacePlaceholders($notificationMailSettings['subject']))->setBody($replacePlaceholders($notificationMailSettings['message']))->send();
 }
 /**
  * Send a new notification that a comment has been created
  *
  * @param \TYPO3\TYPO3CR\Domain\Model\NodeInterface $commentNode The comment node
  * @param \TYPO3\TYPO3CR\Domain\Model\NodeInterface $postNode The post node
  * @return void
  */
 public function sendNewCommentNotification(NodeInterface $commentNode, NodeInterface $postNode)
 {
     if ($this->settings['notifications']['to']['email'] === '') {
         return;
     }
     if (!class_exists('TYPO3\\SwiftMailer\\Message')) {
         $this->systemLogger->logException(new \TYPO3\Flow\Exception('The package "TYPO3.SwiftMailer" is required to send notifications!', 1359473932));
         return;
     }
     try {
         $mail = new Message();
         $mail->setFrom(array($commentNode->getProperty('emailAddress') => $commentNode->getProperty('author')))->setTo(array($this->settings['notifications']['to']['email'] => $this->settings['notifications']['to']['name']))->setSubject('New comment on blog post "' . $postNode->getProperty('title') . '"' . ($commentNode->getProperty('spam') ? ' (SPAM)' : ''))->setBody($commentNode->getProperty('text'))->send();
     } catch (\Exception $e) {
         $this->systemLogger->logException($e);
     }
 }
 /**
  * @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();
 }
Beispiel #5
0
 /**
  * Sends an activation mail for $token to the given $recipientAddress.
  *
  * The mail is built and sent according to the configuration given in the preset assigned to the $token.
  *
  * @param string $recipientAddress
  * @param Token $token
  * @param array $additionalTemplateVariables
  * @return int
  */
 public function sendActivationMail($recipientAddress, Token $token, array $additionalTemplateVariables = [])
 {
     $preset = $token->getPreset();
     $activationLink = $this->getActivationLink($token);
     $mail = new Message();
     $mail->setFrom([$preset['mail']['from']['address'] => $preset['mail']['from']['name']])->setTo($recipientAddress)->setSubject($preset['mail']['subject']);
     $templateVariables = array_merge(['activationLink' => $activationLink, 'recipientAddress' => $recipientAddress, 'token' => $token, 'meta' => $token->getMeta()], $additionalTemplateVariables);
     $this->fluidView->setTemplatePathAndFilename($preset['mail']['message']['plaintext']);
     $this->fluidView->assignMultiple($templateVariables);
     $mail->setBody($this->fluidView->render(), 'text/plain');
     if (isset($preset['mail']['html'])) {
         $this->fluidView->setTemplatePathAndFilename($preset['mail']['message']['html']);
         $this->fluidView->assignMultiple($templateVariables);
         $mail->setBody($this->fluidView->render(), 'text/html');
     }
     return $mail->send();
 }
Beispiel #6
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();
 }