diff --git a/Classes/Service/FormhandlerFinisherService.php b/Classes/Service/FormhandlerFinisherService.php index f8570f31da14633db18244b9304310724e4c08e8..bf43eabe1803ea6219e7f6ecc0b7bb681e6e1680 100644 --- a/Classes/Service/FormhandlerFinisherService.php +++ b/Classes/Service/FormhandlerFinisherService.php @@ -28,7 +28,6 @@ namespace SGalinski\SgMail\Service; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Object\ObjectManager; -use TYPO3\CMS\Lang\LanguageService; use Typoheads\Formhandler\Finisher\AbstractFinisher; /** @@ -62,9 +61,6 @@ class FormhandlerFinisherService extends AbstractFinisher { * @return array $gp */ public function process() { - /** @var $translator LanguageService */ - $translator = (TYPO3_MODE === 'FE' ? $GLOBALS['TSFE'] : $GLOBALS['LANG']); - if (!isset($this->settings['to_address'])) { $toAddressField = $this->settings['to_address_field']; $toAddress = $this->gp[$toAddressField]; @@ -72,16 +68,15 @@ class FormhandlerFinisherService extends AbstractFinisher { $toAddress = $this->settings['to_address']; } - $fromAddress = [$this->settings['from_address'] => $this->settings['from_name']]; - $objectManager = GeneralUtility::makeInstance(ObjectManager::class); /** @var \SGalinski\SgMail\Service\MailTemplateService $mailTemplateService */ $mailTemplateService = $objectManager->get(MailTemplateService::class); $mailTemplateService->setToAddresses($toAddress); - $mailTemplateService->setFromAddress($fromAddress); + $mailTemplateService->setFromAddress($this->settings['from_address']); $mailTemplateService->setTemplateName($this->settings['template_key']); $mailTemplateService->setExtensionKey($this->settings['extension_key']); $mailTemplateService->setMarkers($this->gp); + $mailTemplateService->setIgnoreMailQueue($this->settings['ignore_mail_queue'] == TRUE); $mailTemplateService->sendEmail(); return $this->gp; diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php index 31831b40bc5af581d345c9f6cdea931aa32b0949..b933dca141f910b46672944f9c3f35daec20063a 100644 --- a/Classes/Service/MailTemplateService.php +++ b/Classes/Service/MailTemplateService.php @@ -115,7 +115,13 @@ class MailTemplateService { * @var \SGalinski\SgMail\Domain\Repository\TemplateRepository * @inject */ - protected $templateRepository = NULL; + protected $templateRepository; + + /** + * @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager + * @inject + */ + protected $persistenceManager; /** * MailTemplateService constructor. @@ -244,6 +250,7 @@ class MailTemplateService { $emailBody = preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $emailBody); if ($this->ignoreMailQueue) { + $this->addMailToMailQueue($subject, $emailBody, $this->priority, TRUE); $this->mailMessage->setBody($emailBody, 'text/html'); $this->mailMessage->send(); } else { @@ -259,8 +266,9 @@ class MailTemplateService { * @param string $subject * @param string $emailBody * @param int $priority + * @param bool $sent */ - private function addMailToMailQueue($subject, $emailBody, $priority) { + private function addMailToMailQueue($subject, $emailBody, $priority, $sent = FALSE) { /** @var ObjectManager $objectManager */ $objectManager = GeneralUtility::makeInstance(ObjectManager::class); @@ -272,9 +280,11 @@ class MailTemplateService { $mail->setPriority($priority); $mail->setBccAddresses(implode(',', $this->bccAddresses)); $mail->setCcAddresses(implode(',', $this->ccAddresses)); + $mail->setSent($sent); $mailRepository = $objectManager->get(MailRepository::class); $mailRepository->add($mail); + $this->persistenceManager->persistAll(); } /** @@ -286,7 +296,7 @@ class MailTemplateService { } /** - * @param array|string $toAddresses + * @param string $toAddresses * @return MailTemplateService */ public function setToAddresses($toAddresses) { @@ -296,7 +306,7 @@ class MailTemplateService { } /** - * @param array|string $fromAddress + * @param string $fromAddress * @return MailTemplateService */ public function setFromAddress($fromAddress) { @@ -316,7 +326,7 @@ class MailTemplateService { } /** - * @param array|string $replyToAddress + * @param string $replyToAddress * @return MailTemplateService */ public function setReplyToAddress($replyToAddress) {