之前对nodemailer做了简要的研究,基本上是搞定了发邮件的问题。但很多情况下邮件的内容不是固定的,然后又需要有一个合适的样式,这就需要使用模板了。nodemailer有nodemailer-markdownnodemailer-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的更多相关文章

  1. 【nodemailer】 初试

    nodemailer 是什么? 简单的讲nodemailer就是用来发送邮件的.最近的一个项目需要向客户的注册邮箱发送验证连接,研究了一下. 刚开始我以为nodemailer还可以用来接收邮件,看了好 ...

  2. 使用nodemailer发送邮件

    今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...

  3. 微信小程序技术分析:Mustache语法要点总结

    小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究下. 什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户 ...

  4. nodemailer 发邮件

    var transporter = nodemailer.createTransport({//v1.0 above do not use 'SMTP' as first param host: &q ...

  5. nodemailer实现node发送邮件

    作为一个前端er,利用node独立做一些全栈小项目,是很有效率和必要的. 需要: 做一个活动报名页面,用户填好的表单需要被工作人员收到,一想到把数据存数据库,还需要给工作人员写一个管理页面就觉得很麻烦 ...

  6. Javascript模板引擎mustache.js详解

    mustache.js是一个简单强大的Javascript模板引擎,使用它可以简化在js代码中的html编写,压缩后只有9KB,非常值得在项目中使用.本文总结它的使用方法和一些使用心得,内容不算很高深 ...

  7. Mustache 使用总结

    前言: 在分析 jeesite 项目的时候,看到了 Mustache,于是查了下 正文: 1.Mustache 概述 Mustache 是基于 JavaScript 实现的模板引擎,即用来 渲染前台页 ...

  8. Mustache 使用心得总结

    Mustache 使用心得总结 前言: 之前的一个项目里面就有用到这个前台的渲染模版,当时挺忙的也没时间抽空总结一下,刚好上周项目里又用到这个轻量型的渲染模版,真心感觉很好用,因此就总结一下使用心得, ...

  9. nodejs & nodemailer

    nodejs & nodemailer https://www.npmjs.com/package/nodemailer 上面的連接裏面 有有一個例子: 可以直接拿來用: 安裝依賴,在pack ...

随机推荐

  1. svn项目导入

    svn项目导入 在已建立好svnserverserver的情况下.且所用电脑上已装好svn,在电脑上导入svn项目 首先,新建目录.点击鼠标右键,选择TortoiseSVN–>export 然后 ...

  2. MongoDB命令学习

    mongodb不像关系型数据库有很强大的GUI客户端,虽然mongodb也有,但功能和稳定性实在不敢恭维,所以操作mongodb我们大部分 都是用类似cmd命令的方式(mongodb称为shell操作 ...

  3. 【甘道夫】HBase基本数据操作的详细说明【完整版,精绝】

    介绍 之前具体写了一篇HBase过滤器的文章.今天把基础的表和数据相关操作补上. 本文档參考最新(截止2014年7月16日)的官方Ref Guide.Developer API编写. 全部代码均基于& ...

  4. 细说Java多线程之内存可见性

    编程这些实践的知识技能,每一次学习使用可能都会有新的认识 一.细说Java多线程之内存可见性(数据挣用)         1.共享变量在线程间的可见性                共享变量:如果一个 ...

  5. Helpers\Date

    Helpers\Date The Date helper is used for calculations with dates. Date::difference($from, $to, $type ...

  6. rem移动端适配

    rem作为一个低调的长度单位,由于手机端网页的兴起,在屏幕适配中得到重用.使用 rem 前端开发者可以很方便的在各种屏幕尺寸下,通过等比缩放的方式达到设计图要求的效果. rem 的官方定义『The f ...

  7. 下拉列表(web),用jQuery实现

    <!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" conten ...

  8. 《Mysql 公司职员学习篇》 第一章 小A的烦恼

    第一章  小A的烦恼 ----- 为什么学习数据库 和 如何选择数据库 小A是某公司的职员,公司数据部的员工,平常的大小工作,完全离不开EXCELL,而最近小A却越来越苦恼,不由的向好朋友小Y吐槽.小 ...

  9. Lucene全文检索系列(一)

    1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...

  10. 关于XML的DTD概述

    1 DTD概述 1.1 什么是DTD DTD(Document Type Definition),文档类型定义,用来约束XML文档.或者可以把DTD理解为创建XML文档的结构!例如可以用DTD要求XM ...