-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathemailReader.js
91 lines (83 loc) · 2.92 KB
/
emailReader.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
require('dotenv').config()
var log4js = require('log4js');
log4js.replaceConsole();
var logger = log4js.getLogger();
var email2Json = require('./email2Json.js');
var firebaseApi = require('./firebase.api.js');
var Imap = require('imap'),
inspect = require('util').inspect;
var imap = new Imap({
user: process.env.GMAIL_USERNAME,
password: process.env.GMAIL_PASSWORD,
host: 'imap.gmail.com',
port: 993,
tls: true,
tlsOptions: { rejectUnauthorized: false },
});
function openInbox(cb) {
imap.openBox('INBOX', false, cb);
}
imap.once('ready', function() {
openInbox(function(err, box) {
if (err) throw err;
imap.search([ 'UNSEEN', ['FROM', 'noreply@morpheuz.co.uk'] ], function(err, results) {
try{
var f = imap.fetch(results, {
bodies: ['HEADER.FIELDS (TO SUBJECT)','TEXT'],
struct: true,
markSeen: true
});
}catch(Exception){
imap.end();
}
if(f!==undefined){
f.on('message', function(msg, seqno) {
console.log('Message #%d', seqno);
var prefix = '(#' + seqno + ') ';
var buffer = '';
msg.on('body', function(stream, info) {
console.log(prefix + 'Body');
//stream.pipe(fs.createWriteStream('msg-' + seqno + '-body.txt'));
stream.on('data', function(chunk) {
buffer += chunk.toString('utf8');
if(buffer.includes("To:")){
const regexBody = /<html>(.*)<\/html>/;
const regexTo = /To: (.*)m/;
const regexSubject = /Subject: (.*)/;
//console.log("BUFFER", buffer);
buffer = buffer.replace(/(\r\n|\n|\r)/gm,"");
/*console.log("TO: "+String(regexTo.exec(buffer)[0]).replace(/To: /,""))
console.log("SUBJECT: "+String(regexSubject.exec(buffer)[0]).replace(/Subject: /,""))
console.log("BODY: "+regexBody.exec(buffer))*/
var to = String(regexTo.exec(buffer)[0]).replace(/To: /,"");
var subject = String(regexSubject.exec(buffer)[0]).replace(/Subject: /,"");
var body = String(regexBody.exec(buffer));
console.log(email2Json.parseEmail2Json(to, subject, body));
var data = email2Json.parseEmail2Json(to, subject, body)[0];
var user = email2Json.parseEmail2Json(to, subject, body)[1];
firebaseApi.setMorpheuzUserData(data, user);
}
});
});
msg.once('end', function() {
console.log(prefix + 'Finished');
});
});
f.once('error', function(err) {
logger.error('Fetch error: ' + err);
});
f.once('end', function() {
console.log('Done fetching all messages!');
imap.end();
});
}
});
});
});
imap.once('error', function(err) {
logger.error(err);
});
imap.once('end', function() {
console.log('Connection ended');
});
imap.connect();