From 8d8620417789550cce223fe48daee20e3b7b4c4a Mon Sep 17 00:00:00 2001 From: 徐荣 <xurong@xurongdeMacBook-Pro.local> Date: Wed, 28 Dec 2016 16:17:14 +0800 Subject: [PATCH] 增加发送年度报表邮件功能 --- 5837fc72dab0a10f44fc684a_2016_12.png | 0 5832ec6620cdec097af3db78_2016_12.png | 0 5837a148dab0a10f44fc6848_2016_12.png | 0 57b4117ecd5f86740fe26cb1_2016_12.png | 0 57e55428b2c5ee2d4c8e9cab_2016.png | 0 5834691d20cdec097af3db7a_2016_12.png | 0 582a0fbb76b2ace74a05354e_2016.png | 0 5844f53b1023fcd1353c1897_2016_12.png | 0 57bba70a20e7219a71d0b2ec_2016.png | 0 5852086143ae539e2895ba6c_2016.png | 0 5837fc72dab0a10f44fc684a_2016.png | 0 57e55428b2c5ee2d4c8e9cab_2016_12.png | 0 5844f53b1023fcd1353c1897_2016.png | 0 5852086143ae539e2895ba6c_2016_12.png | 0 57ed2f60b2c5ee2d4c8e9cb3_2016.png | 0 582fe2a320cdec097af3db74_2016.png | 0 582fe2a320cdec097af3db74_2016_12.png | 0 5766a035f08504e7cd3fb33e_2016_12.png | 0 reporter_year.js | 85 ++++++++++++++++++++++++++++++++++++++++++ 5834691d20cdec097af3db7a_2016.png | 0 582d6af8677961ce6b055880_2016_12.png | 0 57ed2f60b2c5ee2d4c8e9cb3_2016_12.png | 0 5766a035f08504e7cd3fb33e_2016.png | 0 57b4117ecd5f86740fe26cb1_2016.png | 0 582a0fbb76b2ace74a05354e_2016_12.png | 0 5832ec6620cdec097af3db78_2016.png | 0 582d6af8677961ce6b055880_2016.png | 0 57bba70a20e7219a71d0b2ec_2016_12.png | 0 5837a148dab0a10f44fc6848_2016.png | 0 29 files changed, 85 insertions(+), 0 deletions(-) diff --git a/5766a035f08504e7cd3fb33e_2016.png b/5766a035f08504e7cd3fb33e_2016.png new file mode 100644 index 0000000..9768dfb --- /dev/null +++ b/5766a035f08504e7cd3fb33e_2016.png Binary files differ diff --git a/5766a035f08504e7cd3fb33e_2016_12.png b/5766a035f08504e7cd3fb33e_2016_12.png new file mode 100644 index 0000000..c5d45e1 --- /dev/null +++ b/5766a035f08504e7cd3fb33e_2016_12.png Binary files differ diff --git a/57b4117ecd5f86740fe26cb1_2016.png b/57b4117ecd5f86740fe26cb1_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/57b4117ecd5f86740fe26cb1_2016.png Binary files differ diff --git a/57b4117ecd5f86740fe26cb1_2016_12.png b/57b4117ecd5f86740fe26cb1_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/57b4117ecd5f86740fe26cb1_2016_12.png Binary files differ diff --git a/57bba70a20e7219a71d0b2ec_2016.png b/57bba70a20e7219a71d0b2ec_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/57bba70a20e7219a71d0b2ec_2016.png Binary files differ diff --git a/57bba70a20e7219a71d0b2ec_2016_12.png b/57bba70a20e7219a71d0b2ec_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/57bba70a20e7219a71d0b2ec_2016_12.png Binary files differ diff --git a/57e55428b2c5ee2d4c8e9cab_2016.png b/57e55428b2c5ee2d4c8e9cab_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/57e55428b2c5ee2d4c8e9cab_2016.png Binary files differ diff --git a/57e55428b2c5ee2d4c8e9cab_2016_12.png b/57e55428b2c5ee2d4c8e9cab_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/57e55428b2c5ee2d4c8e9cab_2016_12.png Binary files differ diff --git a/57ed2f60b2c5ee2d4c8e9cb3_2016.png b/57ed2f60b2c5ee2d4c8e9cb3_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/57ed2f60b2c5ee2d4c8e9cb3_2016.png Binary files differ diff --git a/57ed2f60b2c5ee2d4c8e9cb3_2016_12.png b/57ed2f60b2c5ee2d4c8e9cb3_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/57ed2f60b2c5ee2d4c8e9cb3_2016_12.png Binary files differ diff --git a/582a0fbb76b2ace74a05354e_2016.png b/582a0fbb76b2ace74a05354e_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/582a0fbb76b2ace74a05354e_2016.png Binary files differ diff --git a/582a0fbb76b2ace74a05354e_2016_12.png b/582a0fbb76b2ace74a05354e_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/582a0fbb76b2ace74a05354e_2016_12.png Binary files differ diff --git a/582d6af8677961ce6b055880_2016.png b/582d6af8677961ce6b055880_2016.png new file mode 100644 index 0000000..853cf58 --- /dev/null +++ b/582d6af8677961ce6b055880_2016.png Binary files differ diff --git a/582d6af8677961ce6b055880_2016_12.png b/582d6af8677961ce6b055880_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/582d6af8677961ce6b055880_2016_12.png Binary files differ diff --git a/582fe2a320cdec097af3db74_2016.png b/582fe2a320cdec097af3db74_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/582fe2a320cdec097af3db74_2016.png Binary files differ diff --git a/582fe2a320cdec097af3db74_2016_12.png b/582fe2a320cdec097af3db74_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/582fe2a320cdec097af3db74_2016_12.png Binary files differ diff --git a/5832ec6620cdec097af3db78_2016.png b/5832ec6620cdec097af3db78_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5832ec6620cdec097af3db78_2016.png Binary files differ diff --git a/5832ec6620cdec097af3db78_2016_12.png b/5832ec6620cdec097af3db78_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5832ec6620cdec097af3db78_2016_12.png Binary files differ diff --git a/5834691d20cdec097af3db7a_2016.png b/5834691d20cdec097af3db7a_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5834691d20cdec097af3db7a_2016.png Binary files differ diff --git a/5834691d20cdec097af3db7a_2016_12.png b/5834691d20cdec097af3db7a_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5834691d20cdec097af3db7a_2016_12.png Binary files differ diff --git a/5837a148dab0a10f44fc6848_2016.png b/5837a148dab0a10f44fc6848_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5837a148dab0a10f44fc6848_2016.png Binary files differ diff --git a/5837a148dab0a10f44fc6848_2016_12.png b/5837a148dab0a10f44fc6848_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5837a148dab0a10f44fc6848_2016_12.png Binary files differ diff --git a/5837fc72dab0a10f44fc684a_2016.png b/5837fc72dab0a10f44fc684a_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5837fc72dab0a10f44fc684a_2016.png Binary files differ diff --git a/5837fc72dab0a10f44fc684a_2016_12.png b/5837fc72dab0a10f44fc684a_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5837fc72dab0a10f44fc684a_2016_12.png Binary files differ diff --git a/5844f53b1023fcd1353c1897_2016.png b/5844f53b1023fcd1353c1897_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5844f53b1023fcd1353c1897_2016.png Binary files differ diff --git a/5844f53b1023fcd1353c1897_2016_12.png b/5844f53b1023fcd1353c1897_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5844f53b1023fcd1353c1897_2016_12.png Binary files differ diff --git a/5852086143ae539e2895ba6c_2016.png b/5852086143ae539e2895ba6c_2016.png new file mode 100644 index 0000000..19ca8f6 --- /dev/null +++ b/5852086143ae539e2895ba6c_2016.png Binary files differ diff --git a/5852086143ae539e2895ba6c_2016_12.png b/5852086143ae539e2895ba6c_2016_12.png new file mode 100644 index 0000000..93b9092 --- /dev/null +++ b/5852086143ae539e2895ba6c_2016_12.png Binary files differ diff --git a/reporter_year.js b/reporter_year.js new file mode 100644 index 0000000..4fa1205 --- /dev/null +++ b/reporter_year.js @@ -0,0 +1,85 @@ +/** + * Created by bin.shen on 26/12/2016. + */ + +var nodemailer = require("nodemailer"); +var smtpTransport = require('nodemailer-smtp-transport'); +var retry = require('retry'); +var request = require('request'); +var webshot = require('webshot'); +var fs = require("fs"); +var config = require('./config'); +var mongoClient = require('mongodb').MongoClient; +var moment = require('moment'); + +mongoClient.connect(config.mongo.uri, function(err, db) { + if (err) { + console.log(err.message); + return; + } + console.log('Connecting to Mongo DB at ' + config.mongo.uri); + + var current = moment(); + var year = current.format("YYYY"); + var month = current.format("MM"); + + db.collection("users").find().toArray(function(err, docs) { + docs.forEach(function(doc) { + var userID = doc._id; + var email = doc.email; + console.log(year + ' | ' + month + ' | ' + userID + ' | ' + email); + sendReport(userID, year, month, email); + }); + }); + + db.close(); +}); + +var sendReport = function(userID, year, month, email) { + var url = 'http://env.7drlb.com/report/user/' + userID + '/myyear/' + year + '/view'; + request(url, function (error, response, body) { + if (!error && response.statusCode == 200) { + var filename = userID + '_' + year + '.png'; + webshot(body, filename, { + renderDelay: 3000, + siteType:'html', + screenSize: { + width: 1000, + height: 2000 + }, + shotSize: { + width: 1000, + height: 'all' + } + }, function(err) { + var filepath = __dirname + '/' + filename; + var imageFile = fs.readFileSync(filepath); + var send_email = function(email, subject, content, level) { + var operation = retry.operation(config.retryOption); + operation.attempt(function(currentAttempt) { + var to = email; + var html = '<img src="data:image/png;base64,' + imageFile.toString("base64") + '" width=1000 height=2000>'; + var transport = nodemailer.createTransport(smtpTransport(config.smtpOption)); + var mailOptions = { + from: config.smtpOption.auth.user, + to: to, + subject:subject, + html:html, + attachments: [{ + path: filepath, + filename: filename, + content: content + }] + }; + transport.sendMail(mailOptions, function(err, doc){ + if (operation.retry(err)) { + return; + } + }); + }); + }; + send_email(email, '���������������������������������������', '2016-11������������'); + }); + } + }); +}; \ No newline at end of file -- Gitblit v1.8.0