37

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

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

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

4

11 回答 11

38

来自用户 RS:

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

这是我在使用模板时发现的最接近快速重新测试电子邮件的方法。谢谢RS!

于 2012-12-14T12:00:00.263 回答
17

以下代码段将呈现“新销售订单”电子邮件并针对任何给定订单显示它。例如,将以下内容放在 /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);
于 2015-02-19T07:54:55.530 回答
15

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

脚本如下所示:

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

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

我称之为:

php -f sendTestEmail.php -- 4303 

其中 4303 是我之前用于测试的顺序。

希望有帮助。

于 2015-05-21T20:54:27.010 回答
4

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

于 2012-12-12T11:10:03.150 回答
4

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

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

于 2014-07-04T12:58:22.143 回答
3

实际上,我们开发了一个扩展程序,让您可以做到这一点:测试从 Magento 后端发送任何 Magento 交易电子邮件。希望在这里提及它不是太商业化。: http ://www.yireo.com/software/magento-extensions/emailtester

于 2013-07-05T19:57:44.250 回答
1

您可以进入后台,进入客户,选择您自己的客户用户,在底部您将有“发送自动生成的密码”。输入管理员密码,然后单击“保存并继续编辑”。这样,您将向您自己的帐户发送密码并测试您的模板。

于 2015-04-14T22:28:08.967 回答
1

我发布了一个扩展程序,允许您从后台预览交易邮件。您只需传递一个订单,然后在 BO 中就会出现一个邮件预览按钮。此外,它允许您直接在邮件预览窗口中启用模板/块提示。

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

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

于 2018-08-08T08:20:04.913 回答
0

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

测试通讯的良好扩展

于 2015-06-25T08:33:29.057 回答
0

我使用一个小测试脚本再次发送订单确认电子邮件。这适用于 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";
于 2017-01-20T13:27:40.603 回答
0

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

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

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

于 2018-01-09T08:19:19.480 回答