【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 ...
随机推荐
- readonly disabled 区别
readonly 提交表单时包含该属性的内容 控件 disabled 不包含该属性
- CentOS6.2下安装eclipse
在eclipse官网下载eclipse的linux版本(此处省略下载过程),我下载的是eclipse-jee-indigo-SR2-linux-gtk.tar.gz,下面是安装过程: 1.sudo ...
- Linux内核之内存管理(4)--缺页处理程序
本文主要解说缺页处理程序,凝视足够具体,不再解释. //以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址add ...
- 【技能】使用纯CSS+html写出方向箭头,简单慷慨,好看
使用纯CSS+html写出方向箭头,贴出来就能够用,100%原创 <html> <head> <title></title> <meta http ...
- ios开发——实用技术OC篇&地图与定位
地图与定位 11.1 iOS定位服务 11.2 iOS地图 11.3 Web地图 1 iOS定位服务 iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电, ...
- android学习日记26--AIDL之进程间的通信
1.AIDL介绍 AIDL:Android Interface Definition Language,即Android接口定义语言. 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运 ...
- (转)如何在JavaScript与ActiveX之间传递数据2
本文研究如何在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDispatch接口.使用类似的方法,可以推广到其他所有脚本型语言,如LUA,AutoCad等.本文将研 ...
- GoF的23个经典设计模式
以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟. GoF(“四人帮”,又称Gang of Four,即 ...
- Android_Menu_PopupMenu
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- 配置opencv
先把opencv配置起来: 详细参见: http://blog.163.com/chen_dawn/blog/static/1125063201461695238801/ 我的机器的配置方法: 先去环 ...