var mailer = require('nodemailer'); var smtpTransport = require('nodemailer-smtp-transport'); var config = require('../config'); var util = require('util'); var logger = require('./logger'); var transporter = mailer.createTransport(smtpTransport(config.mail_opts)); var SITE_ROOT_URL = 'http://' + config.host; var async = require('async') /** * Send an email * @param {Object} data 邮件对象 */ var sendMail = function (data) { if (config.debug) { return; } // 重试5次 async.retry({times: 5}, function (done) { transporter.sendMail(data, function (err) { if (err) { // 写为日志 logger.error('send mail error', err, data); return done(err); } return done() }); }, function (err) { if (err) { return logger.error('send mail finally error', err, data); } logger.info('send mail success', data) }) }; exports.sendMail = sendMail; /** * 发送激活通知邮件 * @param {String} who 接收人的邮件地址 * @param {String} token 重置用的token字符串 * @param {String} name 接收人的用户名 */ exports.sendActiveMail = function (who, token, name) { var from = util.format('%s <%s>', config.name, config.mail_opts.auth.user); var to = who; var subject = config.name + '社区帐号激活'; var html = '

您好:' + name + '

' + '

我们收到您在' + config.name + '社区的注册信息,请点击下面的链接来激活帐户:

' + '激活链接' + '

若您没有在' + config.name + '社区填写过注册信息,说明有人滥用了您的电子邮箱,请删除此邮件,我们对给您造成的打扰感到抱歉。

' + '

' + config.name + '社区 谨上。

'; exports.sendMail({ from: from, to: to, subject: subject, html: html }); }; /** * 发送密码重置通知邮件 * @param {String} who 接收人的邮件地址 * @param {String} token 重置用的token字符串 * @param {String} name 接收人的用户名 */ exports.sendResetPassMail = function (who, token, name) { var from = util.format('%s <%s>', config.name, config.mail_opts.auth.user); var to = who; var subject = config.name + '社区密码重置'; var html = '

您好:' + name + '

' + '

我们收到您在' + config.name + '社区重置密码的请求,请在24小时内单击下面的链接来重置密码:

' + '重置密码链接' + '

若您没有在' + config.name + '社区填写过注册信息,说明有人滥用了您的电子邮箱,请删除此邮件,我们对给您造成的打扰感到抱歉。

' + '

' + config.name + '社区 谨上。

'; exports.sendMail({ from: from, to: to, subject: subject, html: html }); };