【nodemailer】之 work with mustache
之前对nodemailer做了简要的研究,基本上是搞定了发邮件的问题。但很多情况下邮件的内容不是固定的,然后又需要有一个合适的样式,这就需要使用模板了。nodemailer有nodemailer-markdown和nodemailer-express-handlebars俩个插件,分别支持markdown语法和handlebars的语法,理论上handlebars也支持mustache模板,但是去看了看nodemailer-express-handlebars的用法,不是很喜欢。另外邮件采用markdown的风格不是很好,而且设不了邮件背景,不过适合发有代码片段的邮件。
为解决上面的问题,自己包装了一下mustache,取名mustache-promise,下面就展示一下如借助这个模块渲染mustache模板作为邮件内容.
代码
项目结构
主文件代码
//Created By zj on 2015/10/3
var nodemailer = require('nodemailer');
var smtpPool=require("nodemailer-smtp-pool");
var Mustache=require("mustache-promise");
var path=require("path");
var options={
"service":"QQ",
"auth":{
"user":"xxxxx@qq.com",
"pass":"xxx"
},
"maxConnections":10,
"secure":true
};
var transporter = nodemailer.createTransport(smtpPool(options));
var mst_pro=new Mustache();
//设置模板文件所在目录,看上面的项目结构;设置文件扩展名为 .mst;load()从文件加载模板内容
mst_pro.dir(path.join(__dirname,"./views")).extName(".mst").load("base",{"by":"footer"});
var sendEmail=function(info){
mst_pro.ok().then(function(){
transporter.sendMail({
from:'xxxxx@qq.com',
to: 'yyyyyy@163.com',
subject: '吐槽',
html:mst_pro.render(info)//以info中的数据渲染模板,输出的是html格式的内容
},function(err,res){
if(err){
console.log(err);
}else{
console.log(res);
}
});
});
}
var information={
"title":"A股小评",
"comments":[{
"comment":"A股就像一个小娃娃一样,一跌就跌停,一涨就涨停,一点都不稳重!",
"byWho":"zj"
},{
"comment":"A股就是世界股市的一个奇葩,经常千股跌停千股涨停,不带这样的,经常做过山车会得心脏病的",
"byWho":"yyrdl"
},{
"comment":"不知道新的韭菜有没有长好,准备去割韭菜了,哈哈",
"byWho":"you guess:)"
}]
};
sendEmail(information);
- base.mst
<h3 style="max-width:100px;margin-left:auto;margin-right:auto">{{title}}</h3>
{{#comments}}
<div style="background-color:skyblue;padding:10px;margin-top:10px;border-radius:3px;">
<p style="font-size: 14px">{{comment}}</p>
{{>by}}
</div>
{{/comments}}
- footer.mst
<div style="margin-left: 600px;font-style: italic;">
-----{{byWho}}
</div>
效果截图
如果你想在邮件中加背景图,其实很简单,参照之前那边文章中的逻辑就可以了,理论上讲加音乐也可以,我试试 :)--结果是显示出了audio标签,但显示不支持该类文件,失败!
mustache-promise的用法在文档里面有详细的介绍
---记录,分享。转载请注明出处!
【nodemailer】之 work with mustache的更多相关文章
- 【nodemailer】 初试
nodemailer 是什么? 简单的讲nodemailer就是用来发送邮件的.最近的一个项目需要向客户的注册邮箱发送验证连接,研究了一下. 刚开始我以为nodemailer还可以用来接收邮件,看了好 ...
- 使用nodemailer发送邮件
今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...
- 微信小程序技术分析:Mustache语法要点总结
小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究下. 什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户 ...
- nodemailer 发邮件
var transporter = nodemailer.createTransport({//v1.0 above do not use 'SMTP' as first param host: &q ...
- nodemailer实现node发送邮件
作为一个前端er,利用node独立做一些全栈小项目,是很有效率和必要的. 需要: 做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦 ...
- Javascript模板引擎mustache.js详解
mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...
- Mustache 使用总结
前言: 在分析 jeesite 项目的时候,看到了 Mustache,于是查了下 正文: 1.Mustache 概述 Mustache 是基于 JavaScript 实现的模板引擎,即用来 渲染前台页 ...
- Mustache 使用心得总结
Mustache 使用心得总结 前言: 之前的一个项目里面就有用到这个前台的渲染模版,当时挺忙的也没时间抽空总结一下,刚好上周项目里又用到这个轻量型的渲染模版,真心感觉很好用,因此就总结一下使用心得, ...
- nodejs & nodemailer
nodejs & nodemailer https://www.npmjs.com/package/nodemailer 上面的連接裏面 有有一個例子: 可以直接拿來用: 安裝依賴,在pack ...
随机推荐
- Android大图片裁剪终极解决方案 原理分析
约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已. 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏 ...
- 【转】解决HttpServletResponse输出的中文乱码问题
http://blog.csdn.net/simon_1/article/details/9092747 首先,response返回有两种,一种是字节流outputstream,一种是字符流print ...
- Best Practice of cross-platform games
__super keyword this keyworld is offered only by Microsoft VC. So you had to call the very name of p ...
- 从你的u盘启动:30天自制操作系统第四天u盘启动学习笔记
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078 ,更多学习中的问题.资料,群里分享 developing environment:ubuntu 关于u盘启动自己做的操 ...
- Android-Opencv开发(一)配置环境
先去官网下载android-opencv http://opencv.org/.
- Flume简介与使用(二)——Thrift Source采集数据
Flume简介与使用(二)——Thrift Source采集数据 继上一篇安装Flume后,本篇将介绍如何使用Thrift Source采集数据. Thrift是Google开发的用于跨语言RPC通信 ...
- 关于SpringAOP的XML方式的配置
AOP(XML)[理解][应用][重点] 1.AOP基础实例 A.导入jar包 核心包(4个) 日志(2个) AOP(4个) Spring进行AOP开发(1个) ...
- jemter接口测试之---接口测试的一些约定
一.接口规范 1.前端请求接口 请求数据格式:appType =1&args ={json}&session =xxx×tamp =now&sign =x ...
- poj 1182 食物链(关系并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62824 Accepted: 18432 Description ...
- Ubuntu 安装php mcrypt
sudo apt-get install php5-mcrypt libmcrypt4 libmcrypt-dev sudo php5enmod mcrypt sudo /etc/init.d/apa ...