Email handling
var Imap = require('imap');
var inspect = require('util').inspect;
var fs = require('fs'), fileStream;
var MailParser = require("mailparser").MailParser;
// var mailparser = new MailParser();
function getReceipts(email, password, callback){
var hostname = 'imap.gmail.com';
var imap = new Imap({
user: email,
password: password,
host: hostname,
port: 993,
tls: true,
tlsOptions: { rejectUnauthorized: false }
});
function openInbox(cb) {
imap.openBox('INBOX', true, cb);
}
// mailparser.on("end", function(mail_object){
// console.log("Subject:", mail_object.subject);
// });
// Receipts Array
var receipts = [];
imap.once('ready', function(){
openInbox(function(err, box) {
if (err) throw err;
imap.search([ 'All', ['SINCE', 'Jan 1, 1990'] ], function(err, results) {
if (err) throw err;
var f = imap.fetch(results, { bodies: '' });
f.on('message', function(msg, seqno) {
// console.log('Message #%d', seqno);
var prefix = '(#' + seqno + ') ';
var emailFilename = 'public/receipts/msg-' + seqno + '-body.txt';
var mailparser = new MailParser();
mailparser.on("end", function(mail_object){
// console.log('Filename: ' + emailFilename);
// console.log("Subject:", mail_object.subject);
// console.log(mail_object.html);
receipts.push(mail_object.html);
});
msg.on('body', function(stream, info) {
// console.log(prefix + 'Body');
// Create a file somewhere
// console.log('STARTING: ' + emailFilename);
// stream.pipe(fs.createWriteStream(emailFilename));
// console.log(info);
});
// msg.once('attributes', function(attrs) {
// console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
// });
msg.once('end', function() {
// console.log(prefix + 'Finished');
// console.log('DONE: ' + emailFilename);
fs.createReadStream(emailFilename).pipe(mailparser);
});
});
f.once('error', function(err) {
console.log('Fetch error: ' + err);
});
f.once('end', function() {
console.log('Done fetching all messages!');
imap.end();
});
});
});
});
// Error connecting
imap.once('error', function(err) {
console.log(err);
});
imap.once('end', function() {
console.log('Connection ended');
// imap.end();
callback(receipts);
});
imap.connect();
}
// Main route for receipt viewer
module.exports = function(app){
// Main site for the email receipt viewer
app.get('/',function(req, res){
res.sendfile('public/index.html');
});
app.get('/getreceipts',function(req, res){
var email = req.param('email');
var password = req.param('password');
console.log(email);
console.log(password);
getReceipts(email, password, function(receipts){
// res.send(receipts);
res.send({receipts: receipts});
// res.send('Got it!');
});
});
};