Magento:使用实际数据预览/测试交易电子邮件,而无需实际发送它们



我正在编辑Magento交易电子邮件中包含的一些phtml文件,但是为了测试更改,我必须实际发送电子邮件。在(例如)订单确认电子邮件的情况下,这意味着我每次想要测试电子邮件时都必须下订单!

在后端选择"预览电子邮件"无济于事,因为电子邮件不包含可见的订单数据。

有没有办法预览交易电子邮件,但让它与订单数据一起呈现?

来自用户 R.S:

您不必创建新订单,您可以重新发送以前的订单电子邮件(转到该订单并单击重新发送电子邮件)。

这是我发现的最接近在玩模板时快速重新测试电子邮件的东西。谢谢R.S!

以下代码片段将呈现"新销售订单"电子邮件,并针对任何给定订单显示它。例如.php将以下内容放在/test 中,然后浏览到正确的位置,例如 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);

对于销售订单,我使用根目录中的测试帐户和脚本。

脚本如下所示:

<?php
include 'app/Mage.php';
Mage::app('default');
$_order = Mage::getModel('sales/order')->load($argv[1]);
$_order->sendNewOrderEmail(); 

我这样称呼它:

php -f sendTestEmail.php -- 4303 

其中 4303 是我之前用于测试的订单。

希望有帮助。

我们开发了一个名为Hackathon_EmailPreview的免费开源扩展。

关于订单邮件,您可以在浏览器中预览它们而无需发送,您可以输入任何订单号来检查不同的订单的外观。

按照这篇博文中的说明进行操作: Magento (L)ocalhost (E)mail (S)erver (S)imulator (2010年11月;作者:Branko Ajzele)Magento将保存html电子邮件,包括您尝试在var/log中发送的所有变量。

我们实际上开发了一个扩展,允许您这样做: 测试从Magento后端发送任何Magento事务电子邮件。希望在这里提及它不会太商业化。http://www.yireo.com/software/magento-extensions/emailtester

您可以输入后端,转到客户,选择您自己的客户用户,然后在底部显示"发送自动生成的密码"。插入管理员密码,然后单击"保存并继续编辑"。这样,您将密码发送到您自己的帐户并测试您的模板。

我发布了一个扩展程序,允许您从后台预览事务性邮件。您只需传递一个订单,然后在BO中将在其上提供邮件预览按钮。此外,它还允许您直接在邮件预览窗口中启用模板/阻止提示。

在这里看到它 : https://github.com/OddBrew/Oddbrew_MailViewer

这是一个免费的扩展,所以我希望它不属于SO的促销规则。

http://www.magentocommerce.com/magento-connect/send-a-test-newsletter-to-an-email.html

测试通讯的良好扩展

我使用一个小测试脚本再次发送订单确认电子邮件。这适用于Magento 1.9,因为它会触发cronjob来处理电子邮件队列。此外,它会重置属性"电子邮件已发送",因此Magento不会跳过发送该电子邮件。

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 "nFinishedn";

转到 app/code/local/Mage/Core/Model/Email/Template.php 文件。在发送函数中,在第 441 行附近有一段代码

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

它将在浏览器上回显邮件,而不会实际将其发送给用户。可以将其用于测试。

最新更新