48.自定义邮件模板

1.创建模块

config.xml

<?xml version="1.0"?>

<config>
    <modules>
        <Www_Email>
            <version>0.1.0</version>
        </Www_Email>
    </modules>

    <global>
        <template>
            <email>
                <customer_quote_email_exist_user_quote_template translate="label" module="email">
                    <label>Existing User Quote Template</label>
                    <file>quote/exist_user.html</file><!--模板文件名类似CMS页,要放到app/locale/{当前语种}/template/email目录或子目录下 -->
                    <type>html</type>
                </customer_quote_email_exist_user_quote_template>
            </email>
        </template>

        <helpers>
            <email>
                <class>Www_Email_Helper</class>
            </email>
        </helpers>
    </global>

   <frontend>
       <routers>
           <email>
               <use>standard</use>
               <args>
                   <module>Www_Email</module>
                   <frontName>email</frontName>
               </args>
           </email>
       </routers>
   </frontend>
</config>
system.xml

<?xml version="1.0"?>

<config>
    <sections>
        <customer translate="label" module="email">
            <groups>
                <quote_email translate="label">
                    <label>Quote Emails</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>5</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>0</show_in_website>
                    <show_in_store>0</show_in_store>

                    <fields>
                        <exist_user_quote_template translate="label">
                            <label>Existing User Quote Email</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_email_template</source_model> <!-- 这个标签会使我们的下拉框列出邮件模板(email templates)-->
                            <sort_order>3</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>0</show_in_website>
                            <show_in_store>0</show_in_store>
                        </exist_user_quote_template>
                    </fields>
                </quote_email>
            </groups>
        </customer>
    </sections>
</config>

这里写图片描述


在 global 中加上如下代码:

<template>
            <email>
                <customer_quote_email_exist_user_quote_template translate="label" module="email">
                    <label>Existing User Quote Template</label>
                    <file>quote/exist_user.html</file>
                    <type>html</type>
                </customer_quote_email_exist_user_quote_template>
            </email>
</template>
这段 xml 基本上只是在 Magento 中的事务性邮件(Transactional Email) 添加了一个入口
<customer_quote_email_exist_user_quote_template> 这个标签里的内容应该是: 在刚建立的 system.xml 文件中节点加起来的全路径
接下来创建模板文件, app/locale/en_US/template/email/quote/exist_user.html, 如模板文件内容已经写好, 可直接写入, 这里的路径和 <file> 标签吻合

这里写图片描述

这里写图片描述

保存使用:
这里写图片描述


创建一个脚本运行:

<?php
error_reporting(E_ALL);
require dirname(dirname(__FILE__))."/app/Mage.php";

//Mage::app();
Mage::setIsDeveloperMode(true);
umask(0);
Mage::app('admin');
Mage::register('isSecureArea', 1);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
ini_set('max_execution_time', 0);
ini_set('memory_limit', '2048M');
Mage::app(0);

define('EMAIL_TEMPLATE', "customer/quote_email/exist_user_quote_template");
$mailSubject = 'my subject';
$sender = Array('name'  => 'Customer Service',
    'email' => 'burtgai@163.com');
$to = array('184200157@qq.com');

$customer = 'wjh';

/*This is optional*/
$storeId = Mage::app()->getStore()->getId();
$template = Mage::getStoreConfig(EMAIL_TEMPLATE);
$mailConfirm = Mage::getModel('core/email_template');
$translate  = Mage::getSingleton('core/translate');

$mailConfirm ->setTemplateSubject($mailSubject)
    ->sendTransactional($template, $sender, $to, '',
        Array('subject'=>$mailSubject,'customer'=>$customer),$storeId);
$translate->setTranslateInline(true);
当你调用这个方法的时候, 需要注意使用正确的参数, $to 是一个一维数组, 
EMAIL_TEMPLATE 是我们 system.xml 中下拉框的路径
在你的 model 或者 controller 调用此方法就可以发送邮件了, 在这个方法中最主要的就是调用了 sendTransactional() 方法

这里写图片描述


我们在上述的 sendTransactional() 方法中,传了一维数组 $customer$quote, 在我们的邮件模板里可以接收到这些值, 比如你想在邮件里显示客户的名字, 你可以在邮件模板里写入:

{{htmlescape var=$customer.name}}

http://www.sunzhenghua.com/magento-sending-custom-emails-in-custom-module

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值