Exemplo n.º 1
0
 /**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * 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;
 }