Magento的Mage::getModel('core/email_template')模型可用来发信。
步骤I.
在你的模块(其实任意Module都可以)的etc/config.xml的根标签<config>下添加代码
<default>
<{限定名1}>
<{限定名n}>
<enabled>1</enabled>
<template>{email模板标签名}</template>
</{限定名n}>
</限定名>
</default>
<global>
<template>
<email>
<{{email模板标签名} translate="label" module="{模块名}">
<label>{任何标识性名}</label>
<file>{email模板html文件名}</file>
<type>html</type>
</{email模板标签名>
</email>
</template>
</global>
a).在global/template/email下定义新的email模板标签,模板文件名。模板文件名类似CMS页,要放到app/locale/{当前语种}/template/email目录或子目录下
b). default/下限定名1...限定名N围绕的template引用global下定义的email模板
限定名1...限定名N表示标签可以嵌套一层或多层用于与其他default下标签区分。
一个例如下:
<default>
<customer_email>
<services_request>
<enabled>1</enabled>
<template>customer_email_service_template</template>
</services_request>
</customer_email>
</default>
<global>
<template>
<email>
<customer_email_service_template translate="label" module="sales">
<label>Customer Services Request</label>
<file>customer_services.html</file>
<type>html</type>
</customer_email_service_template>
</email>
</template>
</global>
步骤II.
创建customer_services.html放到app/locale/{当前语种}/template/email目录下(内容省略).
步骤III. 代码调用例
/* @var $translate Mage_Core_Model_Translate */
$translate = Mage::getSingleton('core/translate');
$translate->setTranslateInline(false);
$storeId = Mage::app()->getStore()->getId();
$template = Mage::getStoreConfig('customer_email/services_request/template', $storeId);
$recipient = array(
'name' => 'Baby',
'email' => '[email protected]'
);
$sender = array(
'name' => 'Koda Guo',
'email' => '[email protected]'
);
$mailTemplate = Mage::getModel('core/email_template');
$mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>$storeId))
->sendTransactional(
$template,
$sender,
$recipient['email'],
$recipient['name'],
array( // parameters to email
'param1'=> 'abc',
'param2'=> 'def',
'param3'=> 'ghi'
)
);
$translate->setTranslateInline(true);
使用Magento模板机制,一旦定义了新的模板,就可以在后台System->Transactional Mail处定制该模板,从而方便维护.