Secciones

miércoles, 3 de febrero de 2016

Magento - Probar HTML de emails

Problema: Hacer cambios en plantillas de emails y guardar el contenido resultante en un archivo.html

Crear nuevo archivo en

app\code\local\Mage\Core\Model\Email\Template.php

Con el siguiente contenido


    /**
     * Send mail to recipient
     *
     * @param   array|string       $email        E-mail(s)
     * @param   array|string|null  $name         receiver name(s)
     * @param   array              $variables    template variables
     * @return  boolean
     **/
    public function send($email, $name = null, array $variables = array())
    {
        if (!$this->isValidForSend()) {
            Mage::logException(new Exception('This letter cannot be sent.')); // translation is intentionally omitted
            return false;
        }

        $emails = array_values((array)$email);
        $names = is_array($name) ? $name : (array)$name;
        $names = array_values($names);
        foreach ($emails as $key => $email) {
            if (!isset($names[$key])) {
                $names[$key] = substr($email, 0, strpos($email, '@'));
            }
        }

        $variables['email'] = reset($emails);
        $variables['name'] = reset($names);

        $this->setUseAbsoluteLinks(true);
        $text = $this->getProcessedTemplate($variables, true);
        $subject = $this->getProcessedTemplateSubject($variables);

        $setReturnPath = Mage::getStoreConfig(self::XML_PATH_SENDING_SET_RETURN_PATH);
        switch ($setReturnPath) {
            case 1:
                $returnPathEmail = $this->getSenderEmail();
                break;
            case 2:
                $returnPathEmail = Mage::getStoreConfig(self::XML_PATH_SENDING_RETURN_PATH_EMAIL);
                break;
            default:
                $returnPathEmail = null;
                break;
        }

        if ($this->hasQueue() && $this->getQueue() instanceof Mage_Core_Model_Email_Queue) {
            /** @var $emailQueue Mage_Core_Model_Email_Queue */
            $emailQueue = $this->getQueue();
            $emailQueue->setMessageBody($text);
            $emailQueue->setMessageParameters(array(
                    'subject'           => $subject,
                    'return_path_email' => $returnPathEmail,
                    'is_plain'          => $this->isPlain(),
                    'from_email'        => $this->getSenderEmail(),
                    'from_name'         => $this->getSenderName(),
                    'reply_to'          => $this->getMail()->getReplyTo(),
                    'return_to'         => $this->getMail()->getReturnPath(),
                ))
                ->addRecipients($emails, $names, Mage_Core_Model_Email_Queue::EMAIL_TYPE_TO)
                ->addRecipients($this->_bccEmails, array(), Mage_Core_Model_Email_Queue::EMAIL_TYPE_BCC);
            $emailQueue->addMessageToQueue();

            return true;
        }

        ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
        ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));

        $mail = $this->getMail();

        if ($returnPathEmail !== null) {
            $mailTransport = new Zend_Mail_Transport_Sendmail("-f".$returnPathEmail);
            Zend_Mail::setDefaultTransport($mailTransport);
        }

        foreach ($emails as $key => $email) {
            $mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
        }

        if ($this->isPlain()) {
            $mail->setBodyText($text);
        } else {
            $mail->setBodyHTML($text);
        }

        $mail->setSubject('=?utf-8?B?' . base64_encode($subject) . '?=');
        $mail->setFrom($this->getSenderEmail(), $this->getSenderName());

/* START LESS - (L)ocalhost (E)mail (S)erver (S)imulator */
$time = date('dmY_His');
/* END LESS - (L)ocalhost (E)mail (S)erver (S)imulator */

        try {
            $mail->send();
/* START LESS - (L)ocalhost (E)mail (S)erver (S)imulator */
if($this->isPlain()) {
 Mage::log($text, null, 'sacsi_less_email_ok_text_'.$time.'.log', true);
} else {
 Mage::log($text, null, 'sacsi_less_email_ok_text_'.$time.'.html', true);
}            
/* END LESS - (L)ocalhost (E)mail (S)erver (S)imulator */
            $this->_mail = null;
        }
        catch (Exception $e) {
            $this->_mail = null;
/* START LESS - (L)ocalhost (E)mail (S)erver (S)imulator */
if($this->isPlain()) {
 Mage::log($text, null, 'sacsi_less_email_exception_text_'.$time.'.log', true);
} else {
 Mage::log($text, null, 'sacsi_less_email_exception_text_'.$time.'.html', true);
}            
/* END LESS - (L)ocalhost (E)mail (S)erver (S)imulator */
            Mage::logException($e);
            return false;
        }

        return true;
    }

*-*
Sebastian A. Colombini