我正在编辑 Magento 交易电子邮件中包含的一些 phtml 文件,但为了测试更改,我必须实际发送电子邮件。在(例如)订单确认电子邮件的情况下,这意味着我每次想要测试电子邮件时都必须下订单!
在后端选择“预览电子邮件”没有帮助,因为电子邮件不包含可见的订单数据。
有没有一种方法可以预览交易电子邮件,但让它与订单数据一起呈现?
来自用户 RS:
您不必创建新订单,您可以重新发送以前的订单电子邮件(通过转到该订单并单击重新发送电子邮件)。
这是我在使用模板时发现的最接近快速重新测试电子邮件的方法。谢谢RS!
以下代码段将呈现“新销售订单”电子邮件并针对任何给定订单显示它。例如,将以下内容放在 /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);
对于销售订单,我使用测试帐户和根目录中的脚本。
脚本如下所示:
<?php
include 'app/Mage.php';
Mage::app('default');
$_order = Mage::getModel('sales/order')->load($argv[1]);
$_order->sendNewOrderEmail();
我称之为:
php -f sendTestEmail.php -- 4303
其中 4303 是我之前用于测试的顺序。
希望有帮助。
按照这篇博文中的说明进行操作:Magento (L)ocalhost (E)mail (S)erver (S)imulator(2010 年 11 月;Branko Ajzele)
Magento 将保存 html 电子邮件,包括您尝试保存的所有变量送进来var/log
。
我们开发了一个名为Hackathon_EmailPreview的免费开源扩展。
关于订单邮件,您可以在浏览器中预览它们而无需发送,您可以输入任何订单号来查看不同订单的外观。
实际上,我们开发了一个扩展程序,让您可以做到这一点:测试从 Magento 后端发送任何 Magento 交易电子邮件。希望在这里提及它不是太商业化。: http ://www.yireo.com/software/magento-extensions/emailtester
您可以进入后台,进入客户,选择您自己的客户用户,在底部您将有“发送自动生成的密码”。输入管理员密码,然后单击“保存并继续编辑”。这样,您将向您自己的帐户发送密码并测试您的模板。
我发布了一个扩展程序,允许您从后台预览交易邮件。您只需传递一个订单,然后在 BO 中就会出现一个邮件预览按钮。此外,它允许您直接在邮件预览窗口中启用模板/块提示。
在这里看到它:https ://github.com/OddBrew/Oddbrew_MailViewer
这是一个免费的扩展,所以我希望它不属于 SO 的促销规则。
我使用一个小测试脚本再次发送订单确认电子邮件。这适用于 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 "\nFinished\n";
转到 app/code/local/Mage/Core/Model/Email/Template.php 文件。在发送函数中,在第 441 行附近有一段代码
if ($this->isPlain()) {
$mail->setBodyText($text);
} else {
$mail->setBodyHTML($text);
}
echo $text;die();
它会在浏览器上回显邮件,而不会实际发送给用户。可以将其用于测试。