/** * 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 = ''; 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月度报告'); }); } }); };