// ### get newsletter user data through send_item_object $newsletterUserObject = $sendItem->attribute('newsletter_user_object'); $emailReceiver = $newsletterUserObject->attribute('email'); $emailReceiverName = $newsletterUserObject->attribute('email_name'); // fetch html & text content of parsed outputxml from senmdobject // data of outputformate $outputStringArray = $outputFormatStringArray[$outputFormatId]['body']; $emailSubject = $outputFormatStringArray[$outputFormatId]['subject']; $outputStringArrayNew = array('html' => '', 'text' => ''); foreach ($outputStringArray as $index => $string) { $outputStringArrayNew[$index] = CjwNewsletterUtils::replaceNewsletterMarkers($string, $sendObject, $newsletterUserObject); } // set x-cjwnl header $cjwMail->resetExtraMailHeaders(); $cjwMail->setExtraMailHeadersByNewsletterSendItem($sendItem); $resultArray = $cjwMail->sendEmail($emailSender, $emailSenderName, $emailReceiver, $emailReceiverName, $emailSubject, $outputStringArrayNew); $sendResult = $resultArray['send_result']; if ($sendResult === true) { // emal was send $progressMonitor->addEntry("[SEND] {$itemCounter}/{$itemsNotSend}", "Newsletter send item {$id} processed. "); // wenn ok als versendet markieren $sendItem->setAttribute('status', CjwNewsletterEditionSendItem::STATUS_SEND); $sendItem->store(); } else { // error execption $exception = $resultArray['send_result']; $progressMonitor->addEntry("[FAILED] {$itemCounter}/{$itemsNotSend}", "Newsletter send item {$id} failed. "); } // parse output_xml with user_content, normal or personalizied? // create email // send email
/** * This function is only a helpfunction * * @param $mailTemplate * @return unknown_type */ function sendSubcriptionMail($mailTemplate) { $tplResource = eZTemplateDesignResource::instance(); $ini = eZINI::instance('site.ini'); $cjwNewsletterIni = eZINI::instance('cjw_newsletter.ini'); $hostName = eZSys::hostname(); // $template = 'design:newsletter/mail/subscription_confirmation.tpl'; $template = $mailTemplate; $newsletterUser = $this; include_once 'kernel/common/template.php'; $tpl = templateInit(); $tpl->setVariable('newsletter_user', $newsletterUser); $tpl->setVariable('hostname', $hostName); $templateResult = $tpl->fetch($template); // get subject from template var definition if ($tpl->hasVariable('subject')) { $subject = $tpl->variable('subject'); } $emailSender = $cjwNewsletterIni->variable('NewsletterMailSettings', 'EmailSender'); $emailSenderName = $cjwNewsletterIni->variable('NewsletterMailSettings', 'EmailSenderName'); $emailReceiver = $newsletterUser->attribute('email'); $emailReplyTo = $cjwNewsletterIni->variable('NewsletterMailSettings', 'EmailReplyTo'); $emailReturnPath = $cjwNewsletterIni->variable('NewsletterMailSettings', 'EmailReturnPath'); // TODO Namen extrahieren $emailReceiverName = ''; $emailSubject = $subject; $emailBody['text'] = $templateResult; $cjwMail = new CjwNewsletterMail(); // x header set for current user $cjwMail->setExtraMailHeadersByNewsletterUser($this); $cjwMail->setTransportMethodDirectlyFromIni(); // trigger_error("test error", E_USER_ERROR); $sendResult = $cjwMail->sendEmail($emailSender, $emailSenderName, $emailReceiver, $emailReceiverName, $emailSubject, $emailBody, false, 'utf-8', $emailReplyTo, $emailReturnPath); return $sendResult; }
// END if ($personalizeContent === 1) { $searchArray = array_merge($searchArray, array('[[name]]', '[[salutation_name]]', '[[first_name]]', '[[last_name]]')); $replaceArray = array_merge($replaceArray, array($newsletterUserObject->attribute('name'), $newsletterUserObject->attribute('salutation_name'), $newsletterUserObject->attribute('first_name'), $newsletterUserObject->attribute('last_name'))); } $outputStringArrayNew = array('html' => '', 'text' => ''); foreach ($outputStringArray as $index => $string) { $outputStringArrayNew[$index] = str_replace($searchArray, $replaceArray, $string); } // START, replace in subject $emailSubject = str_replace($searchArray, $replaceArray, $emailSubject); // END // set x-cjwnl header $cjwMail->resetExtraMailHeaders(); $cjwMail->setExtraMailHeadersByNewsletterSendItem($sendItem); $resultArray = $cjwMail->sendEmail($emailSender, $emailSenderName, $emailReceiver, $emailReceiverName, $emailSubject, $outputStringArrayNew, false, 'utf-8', $emailReplyTo, $emailReturnPath); $sendResult = $resultArray['send_result']; if ($sendResult === true) { // emal was send $progressMonitor->addEntry("[SEND] {$itemCounter}/{$itemsNotSend}", "Newsletter send item {$id} processed. "); // wenn ok als versendet markieren $sendItem->setAttribute('status', CjwNewsletterEditionSendItem::STATUS_SEND); $sendItem->store(); } else { // error execption $exception = $resultArray['send_result']; $progressMonitor->addEntry("[FAILED] {$itemCounter}/{$itemsNotSend}", "Newsletter send item {$id} failed, abort and bounce newsletter user."); // abort item if mail returns directly e.g. mailbox not found $sendItem->setAttribute('status', CjwNewsletterEditionSendItem::STATUS_ABORT); $sendItem->store(); // bounce send Item