我正在编辑Magento中的交易邮件中包含的一些phtml文件,但为了测试更改,我必须实际发送电子邮件。例如订单确认电子邮件的情况下,这意味着每次想要测试电子邮件时都必须下订单!
在后台选择“预览电子邮件”没有帮助,因为电子邮件不包含可见的订单数据。
是否有一种方法可以预览交易邮件,但使其呈现具有订单数据?
我正在编辑Magento中的交易邮件中包含的一些phtml文件,但为了测试更改,我必须实际发送电子邮件。例如订单确认电子邮件的情况下,这意味着每次想要测试电子邮件时都必须下订单!
在后台选择“预览电子邮件”没有帮助,因为电子邮件不包含可见的订单数据。
是否有一种方法可以预览交易邮件,但使其呈现具有订单数据?
来自用户R.S:
您不必创建新订单,您可以重新发送以前的订单电子邮件(通过进入该订单并点击重新发送电子邮件)。
这是我在调试模板时快速重新测试电子邮件所找到的最接近的方法。感谢R.S!
Mage_Sales_Model_Order :: sendNewOrderEmail()
是否具有if($ this-> getEmailSent()){return $ this;}
测试。如果是这样,请暂时将其注释掉。 - Hervé Guétinrequire_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 (Nov 2010,作者Branko Ajzele)。 Magento将保存HTML电子邮件,包括您尝试在var/log
中发送的所有变量。
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 文件。 在 send 函数中,大约在第 441 行附近有一段代码
if ($this->isPlain()) {
$mail->setBodyText($text);
} else {
$mail->setBodyHTML($text);
}
echo $text;die();
它将在浏览器上回显邮件,而不实际发送给用户。可以用于测试。