我正在编辑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();
它将在浏览器上回显邮件,而不会实际将其发送给用户。可以将其用于测试。