const Imap = require("imap"); const { simpleParser } = require("mailparser"); const inspect = require("util").inspect; const saveMessage = require("./storeMessage").saveMessage; const imapConfig = require("./config.json").mail; const fs = require("fs"); const imap = new Imap({ user: imapConfig.user, password: imapConfig.password, tlsOptions: { servername: "imap.gmail.com" }, host: "imap.gmail.com", port: 993, tls: true, }); // reset table; let shouldReset = false; // let shouldReset = true; if (shouldReset) { const { execQuery, execQueryAsync } = require("../sql/bdd"); const query = "SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = 'mail'"; execQueryAsync(query).then((results) => { execQuery("SET FOREIGN_KEY_CHECKS=0"); results.map((table) => { execQuery("DELETE FROM " + table.table_name); }); }); return; } imap.once("ready", function () { const readOnly = true; imap.openBox("INBOX", readOnly, (err, box) => { // console.log(box); // uidvalidty uidnext, messages total and new imap.search(["ALL"], function (err, results) { console.log(results[results.length - 1]); }); const f = imap.fetch(970, { size: true, envelope: true, }); let messageIDs = []; // var f = imap.seq.fetch('1:3', { // bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)', // struct: true // }); f.on("message", function (msg, seqno) { msg.once("attributes", (attrs) => { // todo find boxId const boxId = 1; messageIDs.push(attrs.envelope.messageId) saveMessage(attrs, boxId, imap); }); }); f.once("error", function (err) { console.log("Fetch error: " + err); }); f.once("end", function () { console.log(messageIDs) isDone = true; console.log("Done fetching all messages!"); }); // imap.end() }); }); imap.once("error", function (err) { console.log(err); }); imap.once("end", function () { console.log("Connection ended"); }); imap.connect(); function isValidEmail(email) { // todo return true; } module.exports = { isValidEmail, };