node-swallowjs
Version:
epp portal
85 lines (77 loc) • 3.27 kB
JavaScript
;
var mailer = require('nodemailer');
var mysql = require('mysql');
var port = process.argv[2];
var config = require('../lib/config.js')[port] || process.exit(1);
var dbh = mysql.createConnection(config.mysql);
function mailto(domain, email, expire, registrant, cb) {
var today = new Date().toISOString();
var transporter = mailer.createTransport({
host: 'smtp.qiye.163.com',
port: 25,
auth: {
user: 'dqtz@nic.wang',
pass: 'zodiac@401'
},
authMethod: 'PLAIN'
});
var mailOptions = {
from: 'dqtz@nic.wang',
to: email.join(', '),
subject: domain + '到期通知',
text: '\n尊敬的' + registrant + '用户,您好:\n\n这是由商城注册局域名管理系统自动发出的续费通知函。\n\n您通过我局域名管理系统注册的域名' + domain + '\n将于' + expire + '到期,为不影响您的正常使用,\n请收到邮件后尽快联系您的代理商进行续费操作。\n\n特别提示:为了避免您宝贵的域名因为续费不及时而导\n致无法使用或被删除,强烈建议您在域名到期前30天就\n开始办理续费手续。(注:您的域名提前30天续费,但\n并不代表您的域名使用期限缩短30天,有何疑问请来电\n咨询,谢谢!)\n\n此邮件为域名管理系统自动发送,请勿回复。\n\n' + today + '\n'
};
transporter.sendMail(mailOptions, cb);
}
function dbh_begin() {
dbh.connect();
}
function dbh_end(message) {
if (message) {
process.stderr.write(message + '\r\n');
process.exitCode = 1;
}
dbh.end();
}
function queryContact(name, cb) {
dbh.query("select json from contact where name=?", [name], function (err, rows) {
if (err) dbh_end("Occur error when queryContact");else {
var json = JSON.parse(rows[0].json);
cb({
org: json.int.org,
email: json.email
});
}
});
}
dbh_begin();
dbh.query("select name,json,ex_date from domain where DATE_FORMAT(ex_date,'%Y-%m-%d')=DATE_ADD(CURRENT_DATE(),INTERVAL " + process.argv[3] + " DAY)", function (err, rows) {
if (err) dbh_end("Occur error when queryDomain");else {
var queue = [];
for (var i in rows) {
var json = JSON.parse(rows[i].json);
queue.push({
domain: rows[i].name,
registrant: json.registrant,
billing: json.billing,
expire: rows[i].ex_date.toISOString()
});
}
var send = function send(error, response) {
console.log(error, response);
var first = queue.shift();
if (!first) dbh_end();else {
queryContact(first.registrant, function (contact) {
first.email = [contact.email];
first.org = contact.org;
queryContact(first.billing, function (contact) {
first.email.push(contact.email);
mailto(first.domain, first.email, first.expire, first.org, send);
});
});
}
};
send();
}
});