一个邮件队列发送服务

mail-queuer

mail-queuer是提供一个邮件队列服务,它可以部署到一台专门的服务器上。经过验证的服务器可以向它发送邮件任务,它会将发送任务排队,然后依次执行任务。一个很典型的应用类似于这样,我们把mail-queuer部署到appFog(例如:smtp.af.cm)上,而将你的网站部署在自己的服务器上,当你需要向用户发送一个欢迎邮件时,您只需要向smtp.af.cm这个服务器发送一个邮件任务即可。 mail-queuer还有一个特点就是可以根据模板(jade)渲染邮件,并且可以支持国际化邮件,你可以设置各种语言的模板。请求服务器只需要提供JSON数据即可,并且邮件的标题也是可以格式化的。

应用场景

mail-queuer适合批量发送邮件,例如会员的欢迎邮件、激活邮件、订单邮件等等。与SES这类服务不同的是,mail-queuer可以渲染邮件。所以,你可以将mail-queuer部署到一个若干个免费云上,让它们免费为你工作,减少对生产服务器的压力。

Install

$ npm install mail-queuer 如何使用 邮件队列服务器

1.引入定义及配置mongoose

var nodemailer = require("nodemailer"); var mongoose = require("mongoose"); var mailQueuer = require('mail-queuer'); mongoose.connect('mongodb://localhost/mail-queuer');

2.创建一个发送邮件的函数

通常一个发送邮件的函数如下所示,在options参数中,提供options.subject(邮件主题)、options.html(邮件内容)、options.to(收件)、

function sendMail(options, callback){ //发送邮件 callback(); };

如果你的项目中有使用nodemailer,你也可以这样:

function sendMail(options, callback){ var transport = nodemailer.createTransport("SMTP", { service: "Gmail", auth: { user: "your@gmail.com", pass: "password" } }); transport.sendMail({ from: "your@gmail.com", //发件人,一般要和user一致 to: options.receiver, // 收件人 subject: options.subject, //邮件主题 html: options.html //邮件内容 }, function(err, res){ transport.close(); callback(err); }); };

3.在configure中,初始化中间件

var options = { //模板路径 templatePath: __dirname + "/template/", //模板对应的配置 templateSubject: { "welcome": { "en": "Welcome %name%", "zh_CN": "欢迎%name%" } }, //每发一份邮件,休息多长的时间再发送 sleep: 5, //限制指定IP才能发起邮件请求 ip: null, //握手的token,用于校验发起请求方 token: "conis", }; app.use(mailQueuer.initialize(mongoose, options, sendMail));

4.添加新建邮件任务的路由

app.get("/addTask", function(req, res, next){ mailQueuer.newTask(req, res, next); }); 参数说明 templatePath:模板的绝对路径 sleep:每发一份邮件中断多久,有些邮件服务器可能会禁止频繁发邮件的,如果邮件服务器是自己的就不用考虑了 ip:限制请求服务器的ip数组,允许是正则表达式 token:校验请求服务器的token templateSubject:邮件主题的模板 请求服务器

请求服务器只需要发送一个post请求过去就可以,需要提供的数据为tokensubject(邮件主题的JSON数据)、data(邮件内容的JSON数据)、template(使用哪个模板)、language(语言,默认为en)。

Examples

请见 ./examples/app.js

Credits Conis Yi License

The MIT License

Copyright (c) 2012-2013 Conis Yi <http://iove.net/>

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。