用Magento的Email模板机制发邮件(创建自定义模板)

出处:http://koda.iteye.com/blog/623678


Magento的Mage::getModel('core/email_template')模型可用来发信。

步骤I.
在你的模块(其实任意Module都可以)的etc/config.xml的根标签<config>下添加代码

   1. <default>  
   2.     <{限定名1}>  
   3.         <{限定名n}>  
   4.             <enabled>1</enabled>  
   5.             <template>{email模板标签名}</template>  
   6.         </{限定名n}>  
   7.     </限定名>  
   8. </default>  
   9. <global>  
  10.     <template>  
  11.       <email>  
  12.         <{{email模板标签名} translate="label" module="{模块名}">  
  13.           <label>{任何标识性名}</label>  
  14.           <file>{email模板html文件名}</file>  
  15.           <type>html</type>  
  16.          </{email模板标签名>  
  17.       </email>  
  18.     </template>  
  19. </global>  

a).在global/template/email下定义新的email模板标签,模板文件名。模板文件名类似CMS页,要放到app/locale/{当前语种}/template/email目录或子目录下
b). default/下限定名1...限定名N围绕的template引用global下定义的email模板
限定名1...限定名N表示标签可以嵌套一层或多层用于与其他default下标签区分。
一个例如下:

   1. <default>  
   2.     <customer_email>  
   3.         <services_request>  
   4.             <enabled>1</enabled>  
   5.             <template>customer_email_service_template</template>  
   6.         </services_request>  
   7.     </customer_email>  
   8. </default>  
   9. <global>  
  10.     <template>  
  11.         <email>  
  12.             <customer_email_service_template translate="label" module="sales">  
  13.                <label>Customer Services Request</label>  
  14.                <file>customer_services.html</file>  
  15.                <type>html</type>  
  16.             </customer_email_service_template>  
  17.         </email>  
  18.     </template>  
  19. </global>  
步骤II.
创建customer_services.html放到app/locale/{当前语种}/template/email目录下(内容省略).

步骤III. 代码调用例

   1. /* @var $translate Mage_Core_Model_Translate */  
   2. $translate = Mage::getSingleton('core/translate');  
   3. $translate->setTranslateInline(false);  
   4.   
   5. $storeId  = Mage::app()->getStore()->getId();  
   6. $template = Mage::getStoreConfig('customer_email/services_request/template', $storeId);  
   7. $recipient = array(  
   8.     'name'  => 'Baby',  
   9.     'email' => '[email protected]'  
  10. );  
  11. $sender  = array(  
  12.     'name'  => 'Koda Guo',  
  13.     'email' => '[email protected]'  
  14. );  
  15.   
  16. $mailTemplate = Mage::getModel('core/email_template');  
  17. $mailTemplate->setDesignConfig(array('area'=>'frontend', 'store'=>$storeId))  
  18.     ->sendTransactional(  
  19.         $template,  
  20.         $sender,  
  21.         $recipient['email'],  
  22.         $recipient['name'],  
  23.         array( // parameters to email  
  24.             'param1'=> 'abc',  
  25.             'param2'=> 'def',  
  26.             'param3'=> 'ghi'  
  27.         )  
  28.     );  
  29.        $translate->setTranslateInline(true);  

使用Magento模板机制,一旦定义了新的模板,就可以在后台System->Transactional Mail处定制该模板,从而方便维护.


你可能感兴趣的:(cms,service,Module,Parameters,email,Magento)