UNPKG

node-swallowjs

Version:

epp portal

85 lines (77 loc) 3.27 kB
#!/usr/bin/env node 'use strict'; 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(); } });