magento email:发送自定义邮件

邮件是几乎所有电商系统都要用到的功能,在magento中实现简单的邮件发送并不复杂,不过要想用特定邮件模板,就需要对magento邮件系统做一些深入了解,本文就分析一下如何发送自定义邮件。之前已经发了一篇介绍magento基本邮件设置的文章 Magento Transactional Emails常规设置,大家可以先了解一下。

有几个关键的点先说一下,大家好有个印象,system.xml,config.xml,core_config_data(table名),邮件模板(Admin->System->Transactional Emails),这几个因素在配置自定义邮件过程中几乎都会用到,但是如果对magento email机制比较了解的话,就可以省掉一些因素,快速的实现自定义邮件发送功能,当然为了加深了解,本文会提到所有因素。

首先是system.xml,这个文件建立之后,在后台System->Configuration的对应tab中,就会找到相应的配置,请看如下示例:

<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<config><sections><customer translate="label" module="employee"><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><sort_order>3</sort_order><show_in_default>1</show_in_default><show_in_website>1</show_in_website><show_in_store>1</show_in_store></exist_user_quote_template></fields></quote_email></groups></customer></sections>
</config>
xml中的sections标签紧跟的是customer标签,所以进入System->Configuration后,在左侧要点击Customer Configuration(因为标签customer已经给出了限定范围)标签,找到Quote Emails,会看到有一个Existing User Quote Email的label,这些都是在system.xml里配置的,当然如果想要改变这些label,只需要在system.xml中改就可以。

这里要注意的是<source_model>adminhtml/system_config_source_email_template</source_model>这个决定了Existing User Quote Email对应的下拉框,包含了所有的已存在的邮件模板,并且在(Admin->System->Transactional Emails)中可以看到并修改他们。

接下来看config.xml文件

	<template><email><customer_quote_email_exist_user_quote_template translate="label" module="employee"><label>jonas Emails</label><file>quote/exist_user.html</file><type>html</type></customer_quote_email_exist_user_quote_template></email></template>
注意标签<customer_quote_email_exist_user_quote_template>,它和system.xml里的标签是有关联的,刚好是system.xml里的<customer>,<quote_email>,<exist_user_quote_template>这三个标签的组合,并且这里一定要这么写,不这么写的话,这个模板文件exist_user.html在Customer Configuration的下拉选项中就不会出现。然后别忘了在app/locale/en_US/template/email/quote/下面要添加exist_user.html;注意这里(config.xml)的label的值是jonas Emails,进入System->Configuration,在左侧点击Customer Configuration标签,在Quote Emails下面,对应Existing User Quote Email的下拉框就会看到名称为jonas Emails的选项(前面说了,如果config和system的标签关联不上的话,这里就不会出现jonas Emails),选择他之后,一定要点击右上角的save config按钮,这个设置才能被保存到DB,即table core_config_data,注意在DB中保存的值并不是jonas Emails,而是它的父标签customer_quote_email_exist_user_quote_template;
如下图:

当上述步骤都完成后,再看code如何实现发邮件,一个简单例子:

                        define('EMAIL_TEMPLATE', "customer/quote_email/exist_user_quote_template");$mailSubject = 'my subject';$sender = Array('name'  => 'Customer Service','email' => 'mail@test.com');$to = array('service@test.com');/*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);	
例子中的EMAIL_TEMPLATE是customer/quote_email/exist_user_quote_template,实际上就是system.xml中三个标签的组合。当调用函数Mage::getStoreConfig(EMAIL_TEMPLATE) 的时候,magento会去查找core_config_data这个表,找到customer/quote_email/exist_user_quote_template对应的的值是什么(如果这个值在DB不存在,会转向config.xml查找,这是另外一种情况,下次介绍)。这里对应的就是customer_quote_email_exist_user_quote_template,然后magento才会去config.xml匹配这个值,最终找到模板quote/exist_user.html。

最后解释下core_config_data这个table如下图所示:


可以看到customer/quote_email/exist_user_quote_template对应的value是customer_quote_email_exist_user_quote_template,前面已经介绍Mage::getStoreConfig(EMAIL_TEMPLATE)实质上就是Mage::getStoreConfig('customer_quote_email_exist_user_quote_template'),而在config中我们已经定义
customer_quote_email_exist_user_quote_template对应的模板是exist_user.html,所以这里实际上使用的模板就是exist_user.html。或许你已经发现有些path对应的value是个数字,这里有个26,其实26是邮件模板的ID,点击Admin->System->Transactional Emails,就会看到每个模板的ID;就是说,本文介绍的是较复杂的magento发送自定义邮件的方法,还有一些其他方法也能实现发送自定义邮件,比如用已存在email template来修改,无需再添加config.xml和system.xml,这样在core_config_data中的value就会是一个数字,发送邮件的时候,使用的就是ID为26所对应的模板;更多的时候,我们都不会再去重新写html,config等文档,只需要在Admin->System->Transactional Emails新加一个template,然后使用这个template即可,还有一种稍简单点的不需添加system.xml的的自定义邮件发送方法magento email:快速实现发送自定义邮件

本文链接:http://blog.csdn.net/shangxiaoxue/article/details/7759591

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39154.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

magento email:快速实现发送自定义邮件

之前介绍了一下稍微复杂一点的 magento email:发送自定义邮件 但是呢&#xff0c;当我们对magento email机制有一定的了解之后&#xff0c;便可以在模块中使用自定义邮件模板快速实现发送邮件功能&#xff01; 登入后台system->Transactional Emails,单击右上角Add New T…

postfix自动搭建邮箱黑科技、邮件群发、批量自建邮局系统

大家好今天给大家分享一个 先进的自建邮箱黑科技&#xff0c;零基础3-5分钟快速搭建几百上千个自建邮箱系统。 软件特点&#xff1a;自动搭建&#xff0c;自动解析&#xff0c;多线程操作 自建邮件系统服务器要求 须开通25端口。另要求必须Centos系统&#xff0c;有固定公网I…

Excel VBA开发自动发送邮件

一、.设置Outlook邮箱帐(略不是本文章的重点) 二、.设置Outlook信任中心如下步骤 若没有做如下操作设置&#xff0c;则Excel VBA调用Outlook自动发送邮件时提示如下 2.1 Outlook->工具->信任中心 2.2 编程访问->选中”从不向我发出可疑活动警告(不推荐)“&#xff0c…

使用Excel和OutLook实现自动发送邮件

参考我的资源: https://download.csdn.net/download/paul50060049/11805973 问题的产生 我们在平时工作中可能会遇到要批量发送邮件的工作&#xff0c;例如财务部根据每个人的工资情况发放工资条到个人的邮箱&#xff0c;因为邮件因人而异&#xff0c;所以需要完成大量而细致…

模拟人生显示无法连接服务器,模拟人生总是显示无法连接网络

模拟人生中不少玩家反馈都会遇到模拟人生总是显示无法连接网络的问题&#xff0c;那么怎么解决这个问题呢&#xff0c;这边ourplay小编为大家分享几个解决方案。 模拟人生游戏简介 《模拟人生移动版》The Sims Mobile)是EA推出的系列作品。玩家可以操作自己的人物完成工作、与他…

编辑合成图片怎么做?手把手教你合成

小伙伴们平时喜欢拍完照片后&#xff0c;将这些照片分享在社交平台上吗&#xff1f;有时我们拍摄的照片会有一些瑕疵&#xff0c;我们可以通过对这些照片进行编辑、合成&#xff0c;以此来填补瑕疵&#xff0c;提高照片的观感。那你们知道如何编辑图片并合成吗&#xff1f;还不…

NFT批量图片合成制作

这是拼接教学&#xff0c;如有兴趣&#xff0c;请扫描底部二维码加群交流 1 按照目前最火的头像来说&#xff0c;一般分为算法生成和拼接图片两种。 2 算法生成相对于普通人来说比较难&#xff0c;拼接图像无疑是一种更好的选择 3 如何批量制作NFT图片呢。 ① 准备组合元素…

chatgpt赋能python:Python图片合成:快速合成图片的最佳选择

Python图片合成&#xff1a;快速合成图片的最佳选择 图片合成是数字图像处理领域的一项关键技术。在很多场景下&#xff0c;我们需要把多个图片合成成一个整体&#xff0c;以达到更好的效果。Python是一种强大而灵活的编程语言&#xff0c;因此也成为了许多开发者进行图片合成…

全民AI计划:通过langchain给LLM接上落地的大腿

langchain是一个开源项目 github.com/hwchase17/l… 。这个项目在GitHub上已经有45.5K个Star了。此项目由一位叫hwchase17的国外小哥在2022年底发布。 我有理由相信&#xff0c;这个项目是为了对接大语言模型才搞的。 一、企业困境: 如何应用大语言模型 大语言模型(Large La…

币圈“土狗”万倍狂欢:一面暴富 一面归零

在币圈&#xff0c;有一类奇葩的虚拟代币项目颇受追捧&#xff0c;人们通常叫它“土狗”。这些项目一般团队匿名&#xff0c;没啥技术含量&#xff0c;强调草根文化&#xff0c;甚至会明说“代币没有价值”。它们身上具有浓厚的meme基因&#xff0c;项目logo有时候就是个表情包…

巴比特 | 元宇宙每日必读:欧洲议会投票通过《人工智能法案》,基础模型供应商要声明训练AI的数据的版权,违规行为或将面临高额罚款...

摘要&#xff1a;据澎湃新闻报道&#xff0c;当地时间6月14日&#xff0c;欧洲议会投票通过了《人工智能法案&#xff08;AI Act&#xff09;》&#xff0c;禁止实时面部识别&#xff0c;并对ChatGPT等生成式人工智能工具提出了新的透明度要求。例如&#xff0c;基础模型的供应…

HTTP文件断点续传原理解析(源码)

生活中&#xff0c;有许多事物&#xff0c;在没有被揭开面纱之前&#xff0c;我们往往会觉得很神秘很高深&#xff0c;认为它一定很难&#xff0c;进而望而却步&#xff0c;失去了解它的机会。然而&#xff0c;很多事&#xff0c;只要我们自己能沉下心来&#xff0c;细细研究&a…

Android断点续传

最近看了一些大佬去面试的时候都提到了断点续传&#xff0c;所以自己也写一个记录下来&#xff0c;断点续传的原理就是通过数据库实时的去保存当前下载的长度&#xff0c;然后下次再次下载的时候通过setRequestProperty告诉服务端我需要这个文件从什么地方开始下载&#xff0c;…

Android笔记--断点续传

断点续传就是在下载资源过程中&#xff0c;网络出现中断后&#xff0c;下一次下载的时候能够接着上一次下载的地方继续下载&#xff0c;以达到节省流量及时间的效果。在Http1.1协议中默认支持获取文件的部分内容&#xff0c;这其中主要是通过头部的两个参数:Range和Content Ran…

Linux断点续传

Linux断点续传 之前使用cp命令拷数据很慢&#xff0c;中途有一次服务器突然关机导致数据拷盘中断&#xff0c;后台发现了rsync命令后速度&#xff0c;工作效率大大提升了。rsync支持断点续传 断点续传测试&#xff1a; rsync -avzP --progress --rshssh /nfs1/public1 root1…

Android 多线程下载以及断点续传

多线程下载 在日常开发中&#xff0c;我们不可避免的会接到类似这样的需求&#xff0c;下载一个比较大的素材文件或者安装包文件&#xff0c;以此实现APP的自动更新&#xff0c;APP内的素材替换等。由于一般此类文件都比较大&#xff0c;一般会在50M以上&#xff0c;如果我们不…

断点续传的实现

文章目录 从上次断开位置继续下载实现原理&#xff08;客户端&#xff09;&#xff1a;HTTP实现&#xff08;流程&#xff09;&#xff1a;图1&#xff1a; 客户端 Range头部信息图2&#xff1a;服务端Content-Range信息 客户端与服务端的请求与响应图解&#xff1a;获取文件 E…

断点续传的原理

断点续传是大型文件数据传输的核心。本文将以多线程技术和Socket技术为依托&#xff0c;介绍大型文件断点续传的实现方法。  基本实现思想  多线程断点续传实现的基本思想就是在发送端&#xff08;也称客户端&#xff09;将要传输的文件分割为大小相当的多块&#xff0c;用…

wget 断点续传

wget是Linux系统中的一个下载工具&#xff0c;最近因为要下载一个比较大的数据集&#xff0c;直接使用浏览器下载每次断开后都会从头开始下载&#xff0c;而wget支持的断点续传功能则可以在已经下载的部分数据的基础上继续下载剩余数据。 &#xff08;1&#xff09;wget安装 …

如何实现文件断点续传功能

本文章首发于公众号攻城狮客栈&#xff0c;有需要的朋友可文末扫描二维码。 相信大家都使用过迅雷、电驴、百度云网盘等一类的工具&#xff0c;所有这些支持上传或下载的工具都有一个功能&#xff0c;那就是断点续传&#xff0c;也就是在你网络不佳传输断开时&#xff0c;传输会…