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

Wac*_*Get 34 php oop magento

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

在后端选择"预览电子邮件"没有帮助,因为电子邮件不包含可见的订单数据.

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

Wac*_*Get 34

来自用户RS:

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

这是我在使用模板时快速重新测试电子邮件的最接近的事情.谢谢RS!


chi*_*ona 15

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


Mut*_*key 15

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

脚本看起来像这样:

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

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

我称之为:

php -f sendTestEmail.php -- 4303 
Run Code Online (Sandbox Code Playgroud)

其中4303是我以前用于测试的顺序.

希望有所帮助.

  • 这是Web不可访问的Shell脚本的理想用例。如果脚本小子在webroot(神圣的垃圾邮件蝙蝠侠)中找到该脚本。 (2认同)
  • @LukeA.Leber 如果它只在开发人员中不用担心,只需确保它不会出现在公共访问地图中 (2认同)

小智 5

按照此博客文章中的说明:Magento(L)ocalhost(E)mail(S)erver(S)模拟器(2010年11月;作者Branko Ajzele) Magento将保存html电子邮件,包括您尝试的所有变量送进去var/log.