Pimcore\Tool\Newsletter::prepareMail PHP Method

prepareMail() public static method

public static prepareMail ( Newsletter $newsletterDocument, SendingParamContainer $sendingContainer = null, string | null $hostUrl = null ) : Mail
$newsletterDocument Pimcore\Model\Document\Newsletter
$sendingContainer Pimcore\Document\Newsletter\SendingParamContainer
$hostUrl string | null
return Pimcore\Mail
    public static function prepareMail(Document\Newsletter $newsletterDocument, SendingParamContainer $sendingContainer = null, $hostUrl = null)
    {
        $mail = new Mail();
        $mail->setIgnoreDebugMode(true);
        if (\Pimcore\Config::getSystemConfig()->newsletter->usespecific) {
            $mail->init("newsletter");
        }
        if (!Tool::getHostUrl() && $hostUrl) {
            $mail->setHostUrl($hostUrl);
        }
        $mail->setDocument($newsletterDocument);
        if ($sendingContainer && $sendingContainer->getParams()) {
            $mail->setParams($sendingContainer->getParams());
        }
        $contentHTML = $mail->getBodyHtmlRendered();
        $contentText = $mail->getBodyTextRendered();
        // render the document and rewrite the links (if analytics is enabled)
        if ($newsletterDocument->getEnableTrackingParameters()) {
            if ($contentHTML) {
                include_once "simple_html_dom.php";
                $html = str_get_html($contentHTML);
                if ($html) {
                    $links = $html->find("a");
                    foreach ($links as $link) {
                        if (preg_match("/^(mailto)/", trim(strtolower($link->href)))) {
                            continue;
                        }
                        $glue = "?";
                        if (strpos($link->href, "?")) {
                            $glue = "&";
                        }
                        $link->href = $link->href . $glue . "utm_source=" . $newsletterDocument->getTrackingParameterSource() . "&utm_medium=" . $newsletterDocument->getTrackingParameterMedium() . "&utm_campaign=" . $newsletterDocument->getTrackingParameterName();
                    }
                    $contentHTML = $html->save();
                    $html->clear();
                    unset($html);
                }
                $mail->setBodyHtml($contentHTML);
            }
        }
        $mail->setBodyHtml($contentHTML);
        $mail->setBodyText($contentText);
        $mail->setSubject($mail->getSubjectRendered());
        return $mail;
    }

Usage Example

Example #1
0
 public function sendTestAction()
 {
     $document = Document\Newsletter::getById($this->getParam("id"));
     $addressSourceAdapterName = $this->getParam("addressAdapterName");
     $adapterParams = json_decode($this->getParam("adapterParams"), true);
     $adapterClass = "\\Pimcore\\Document\\Newsletter\\AddressSourceAdapter\\" . ucfirst($addressSourceAdapterName);
     /**
      * @var $addressAdapter \Pimcore\Document\Newsletter\AddressSourceAdapterInterface
      */
     $addressAdapter = new $adapterClass($adapterParams);
     $sendingContainer = $addressAdapter->getParamsForTestSending($this->getParam("testMailAddress"));
     $mail = \Pimcore\Tool\Newsletter::prepareMail($document);
     \Pimcore\Tool\Newsletter::sendNewsletterDocumentBasedMail($mail, $sendingContainer);
     $this->_helper->json(["success" => true]);
 }
All Usage Examples Of Pimcore\Tool\Newsletter::prepareMail