Magento: ¿previsualizar / probar correos electrónicos transaccionales con datos reales, sin enviarlos realmente?


Estoy editando algunos archivos phtml que se incluyen en correos electrónicos transaccionales en Magento, pero para probar los cambios, tengo que enviar los correos electrónicos. En el caso de (por ejemplo) el correo electrónico de confirmación del pedido, esto significa que tengo que realizar un pedido cada vez que quiero probar un correo electrónico.

Elegir "preview email" en el backend no ayuda porque el correo electrónico no contiene datos de pedido visibles.

¿ Hay una manera de previsualizar un correo electrónico transaccional pero que se procese con orden ¿data?

 32
Author: PeeHaa, 2012-12-11

11 answers

Del usuario R. S:

No tiene que crear un nuevo pedido, puede reenviar un correo electrónico de pedido anterior (vaya a ese pedido y haga clic en reenviar correo electrónico).

Eso es lo más cercano que he encontrado para volver a probar rápidamente los correos electrónicos al jugar con las plantillas. Gracias R. S!

 31
Author: WackGet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-14 12:00:00

El siguiente fragmento mostrará el correo electrónico "nueva orden de venta" y lo mostrará para cualquier orden dada. Ponga lo siguiente en / test.php por ejemplo y simplemente navegue a la ubicación adecuada como http://www.example.com/test.php

require_once 'app/Mage.php';
Mage::app();

// loads the proper email template
$emailTemplate  = Mage::getModel('core/email_template')
                      ->loadDefault('sales_email_order_template');

// All variables your error log tells you that are missing can be placed like this:

$emailTemplateVars = array();
$emailTemplateVars['usermessage'] = "blub";
$emailTemplateVars['store'] = Mage::app()->getStore();
$emailTemplateVars['sendername'] = 'sender name';
$emailTemplateVars['receivername'] = 'receiver name';

// order you want to load by ID

$emailTemplateVars['order'] = Mage::getModel('sales/order')->load(673);

// load payment details:
// usually rendered by this template:
// web/app/design/frontend/base/default/template/payment/info/default.phtml
$order = $emailTemplateVars['order'];
$paymentBlock = Mage::helper('payment')->getInfoBlock($order->getPayment())
                ->setIsSecureMode(true);
$paymentBlock->getMethod()->setStore(Mage::app()->getStore()); 

$emailTemplateVars['payment_html'] = $paymentBlock->toHtml();

//displays the rendered email template
echo $emailTemplate->getProcessedTemplate($emailTemplateVars);
 14
Author: chickahoona,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 13:57:06

Para las órdenes de venta, uso una cuenta de prueba y un script que tengo en mi directorio raíz.

El script se ve así:

<?php
include 'app/Mage.php';
Mage::app('default');

$_order = Mage::getModel('sales/order')->load($argv[1]);
$_order->sendNewOrderEmail(); 

Y yo lo llamo así:

php -f sendTestEmail.php -- 4303 

Donde 4303 es el orden que he usado para probar antes.

Espero que eso ayude.

 14
Author: MutantTurkey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-26 20:08:59

Siga las instrucciones en este blogpost: Magento (L)ocalhost (E)mail (S)erver (S)imulator (Nov 2010; por Branko Ajzele) Magento guardará los correos electrónicos html, incluidas todas las variables que está tratando de enviar var/log.

 5
Author: Tom van den Heuvel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-26 20:09:34

Hemos desarrollado una extensión que le permite hacer exactamente esto: Probar enviar cualquier correo electrónico transaccional de Magento desde el backend de Magento. Espero que no sea demasiado comercial mencionarlo aquí.: http://www.yireo.com/software/magento-extensions/emailtester

 3
Author: jissereitsma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-05 19:57:44

Desarrollamos una extensión gratuita de código abierto llamada Hackathon_EmailPreview.

Con respecto a los correos de pedidos, puede previsualizarlos en el navegador sin enviarlos y puede ingresar cualquier número de pedido para verificar cómo se verían los diferentes pedidos.

 3
Author: Matthias Zeis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-04 12:58:22

Puede ingresar al backend, ir a clientes, seleccionar su propio usuario cliente, y en la parte inferior tendrá "Enviar contraseña generada automáticamente". Inserte la contraseña de administrador y haga clic en "Guardar y continuar editando". De esta manera, enviará una contraseña a su propia cuenta y probará su plantilla.

 0
Author: Iggy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-14 22:28:08
 0
Author: Magefast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-25 08:33:29

Utilizo un pequeño script de prueba para enviar de nuevo el correo electrónico de confirmación del pedido. Esto funciona con Magento 1.9 porque activa el cronjob para procesar la cola de correo electrónico. Además, restablece el atributo "Correo electrónico enviado" para que Magento no omita el envío de ese correo electrónico.

include 'app/Mage.php';
Mage::app('default');

$oid = '1234567';

$_order = Mage::getModel('sales/order')->load($oid);    
$_order->setEmailSent('0');
$_order->save();

$_order->sendNewOrderEmail();

// var_dump($_order);

// Trigger email queue
$a = new Mage_Core_Model_Email_Queue();
$a->send();

echo "\nFinished\n";
 0
Author: Stefan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-20 13:27:40

Vaya a app/code/local/Mage/Core/Model/Email/Template.archivo php. En la función enviar, alrededor de la línea 441 hay un fragmento de código

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

Agregue echo after texto después de } con die. se hará eco del correo en el navegador sin enviarlo al usuario.

 0
Author: Rajeev Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-12 09:03:54

He lanzado una extensión que le permite previsualizar correos transaccionales de su back-office. Solo tiene que pasar una orden, y luego un botón de vista previa de correo estará disponible en él en el BO. Además, le permite habilitar sugerencias de plantilla/bloque directamente en la ventana de vista previa de correo.

Véalo aquí: https://github.com/OddBrew/Oddbrew_MailViewer

Esta es una extensión gratuita, así que espero que no caiga bajo las reglas promocionales de SO.

 0
Author: OddBrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-08 08:20:04