/** * This method converts an sends mails. * * @param array $mailconf Mail configuration * @param array $orderdata Order data * @param string $template Template * * @return bool of \TYPO3\CMS\Core\Mail\MailMessage */ protected function ordermoveSendMail(array $mailconf, array &$orderdata, &$template) { // First line is subject $parts = explode(chr(10), $mailconf['plain']['content'], 2); // add mail subject $mailconf['alternateSubject'] = trim($parts[0]); // replace plaintext content $mailconf['plain']['content'] = trim($parts[1]); /* * Convert Text to charset */ $this->csConvObj->initCharset('utf-8'); $this->csConvObj->initCharset('8bit'); $mailconf['plain']['content'] = $this->csConvObj->conv($mailconf['plain']['content'], 'utf-8', 'utf-8'); $mailconf['alternateSubject'] = $this->csConvObj->conv($mailconf['alternateSubject'], 'utf-8', 'utf-8'); $hooks = \CommerceTeam\Commerce\Factory\HookFactory::getHooks('Hook/OrdermailHooks', 'ordermoveSendMail'); foreach ($hooks as $hook) { if (method_exists($hook, 'postOrdermoveSendMail')) { $hook->postOrdermoveSendMail($mailconf, $orderdata, $template); } } return \CommerceTeam\Commerce\Utility\GeneralUtility::sendMail($mailconf); }
/** * Send admin mail * Also performes a charset Conversion for the mail, including Sender. * * @param int $orderUid Order ID * @param array $orderData Collected Order Data form PI3 * * @return bool TRUE on success */ public function sendAdminMail($orderUid, array $orderData) { $hooks = HookFactory::getHooks('Controller/CheckoutController', 'sendAdminMail'); $frontendController = $this->getFrontendController(); if (is_array($this->getFrontendUser()->user && strlen($this->getFrontendUser()->user['email']))) { $userMail = $this->getFrontendUser()->user['email']; } else { $userMail = $this->sessionData['billing']['email']; } if (is_array($this->getFrontendUser()->user && strlen($this->getFrontendUser()->user['name']))) { $userName = $this->getFrontendUser()->user['name'] . ' ' . $this->getFrontendUser()->user['surname']; } else { $userName = $this->sessionData['billing']['name'] . ' ' . $this->sessionData['billing']['surname']; } if ($this->conf['adminmail.']['from'] || $userMail) { /** * Checkout controller. * * @var \CommerceTeam\Commerce\Controller\CheckoutController $adminMailObj */ $adminMailObj = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Controller\\CheckoutController'); $adminMailObj->conf = $this->conf; $adminMailObj->pi_setPiVarDefaults(); $adminMailObj->cObj = $this->cObj; $adminMailObj->pi_loadLL(); $adminMailObj->staticInfo =& $this->staticInfo; $adminMailObj->currency = $this->currency; $adminMailObj->showCurrency = $this->conf['adminmail.']['showCurrency']; $adminMailObj->templateCode = $this->cObj->fileResource($this->conf['adminmail.']['templateFile']); $adminMailObj->generateLanguageMarker(); $adminMailObj->userData = $this->userData; foreach ($hooks as $hookObj) { if (method_exists($hookObj, 'preGenerateMail')) { $hookObj->preGenerateMail($adminMailObj, $this); } } $mailcontent = $adminMailObj->generateMail($orderUid, $orderData); $basket = $this->getBasket(); foreach ($hooks as $hookObj) { if (method_exists($hookObj, 'postGenerateMail')) { $hookObj->postGenerateMail($adminMailObj, $this, $basket, $mailcontent, $this); } } $htmlContent = ''; if ($this->conf['adminmail.']['useHtml'] == '1' && $this->conf['adminmail.']['templateFileHtml']) { $adminMailObj->templateCode = $this->cObj->fileResource($this->conf['adminmail.']['templateFileHtml']); $htmlContent = $adminMailObj->generateMail($orderUid, $orderData, array()); $adminMailObj->isHtmlMail = true; foreach ($hooks as $hookObj) { if (method_exists($hookObj, 'postGenerateMail')) { $hookObj->postGenerateMail($adminMailObj, $this, $basket, $htmlContent); } } unset($adminMailObj->isHtmlMail); } // Moved to plainMailEncoded // First line is subject $parts = explode(chr(10), $mailcontent, 2); $subject = trim($parts[0]); $plainMessage = trim($parts[1]); // Check if charset ist set by TS // Otherwise set to default Charset if (!$this->conf['adminmail.']['charset']) { $this->conf['adminmail.']['charset'] = $frontendController->renderCharset; } // Checck if mailencoding ist set // Otherwise set to 8bit if (!$this->conf['adminmail.']['encoding ']) { $this->conf['adminmail.']['encoding '] = '8bit'; } // Convert Text to charset $frontendController->csConvObj->initCharset($frontendController->renderCharset); $frontendController->csConvObj->initCharset(strtolower($this->conf['adminmail.']['charset'])); $plainMessage = $frontendController->csConvObj->conv($plainMessage, $frontendController->renderCharset, strtolower($this->conf['adminmail.']['charset'])); $subject = $frontendController->csConvObj->conv($subject, $frontendController->renderCharset, strtolower($this->conf['adminmail.']['charset'])); $usernameMailencoded = $frontendController->csConvObj->specCharsToASCII($frontendController->renderCharset, $userName); if ($this->debug) { print '<b>Adminmail from </b><pre>' . $plainMessage . '</pre>' . LF; } // Mailconf for tx_commerce_div::sendMail($mailconf); $recipient = array(); if ($this->conf['adminmail.']['cc']) { $recipient = GeneralUtility::trimExplode(',', $this->conf['adminmail.']['cc']); } if (is_array($recipient)) { array_push($recipient, $this->conf['adminmail.']['mailto']); } $mailconf = array('plain' => array('content' => $plainMessage, 'subject' => $subject), 'html' => array('content' => $htmlContent, 'path' => '', 'useHtml' => $this->conf['adminmail.']['useHtml']), 'defaultCharset' => $this->conf['adminmail.']['charset'], 'encoding' => $this->conf['adminmail.']['encoding'], 'attach' => $this->conf['adminmail.']['attach.'], 'alternateSubject' => $this->conf['adminmail.']['alternateSubject'], 'recipient' => implode(',', $recipient), 'recipient_copy' => $this->conf['adminmail.']['bcc'], 'replyTo' => $this->conf['adminmail.']['from'], 'priority' => $this->conf['adminmail.']['priority'], 'callLocation' => 'sendAdminMail', 'additionalData' => $this); // Check if user mail is set if ($userMail && $usernameMailencoded && $this->conf['adminmail.']['sendAsUser'] == 1) { $mailconf['fromEmail'] = $userMail; $mailconf['fromName'] = $usernameMailencoded; } else { $mailconf['fromEmail'] = $this->conf['adminmail.']['from']; $mailconf['fromName'] = $this->conf['adminmail.']['from_name']; } \CommerceTeam\Commerce\Utility\GeneralUtility::sendMail($mailconf); return true; } return false; }