Recent and New not working in node-imap for outlook

572 Views Asked by At

I am using node-imap to search for the latest emails in my Outlook account's inbox. The documentation mentions the use of the "recent" or "new" flag. However, it seems to work fine for Gmail but not for Outlook. I have attached my code below. Can someone please suggest a solution?

var Imap = require("imap"); // version :  "^0.8.19",

let config = {
  keepalive: {
    interval: 4000,
    idleInterval: 200000,
    forceNoop: true,
  },
  user: "[email protected]",
  password: "xxxxxxxxxxx", // app password
  host: "outlook.office365.com",
  port: 993,
  tls: true,
  tlsOptions: { rejectUnauthorized: false },
};

let imap = new Imap(config);

imap.connect()

imap.once("ready", function () {
  console.log("Email connection established!");

  imap.openBox("INBOX", false, function (err, box) {
    if (err) {
      console.log("Error opening inbox");
    }
  });
});

imap.on("error", function (err) {
  console.log(err);
});

imap.on("close", function (err) {
  console.log("connection closed");
});

imap.on("end", function (err) {
  console.log("connection ended");
});

imap.on("mail", function (newMsgNums) {
  console.log(`${newMsgNums} mails received!`);

 imap.search(["RECENT"], function (error, results) {
    if (!results || results.length == 0) {
      console.log(`No recent email available!`);
      return;
    }

    var fetchQuery = imap.fetch(results, {
      bodies: [""],
      struct: true,
    });

    fetchQuery.on("message", function (msg, seqno) {
      msg.on("body", async function (stream, info) {
        console.log(stream);
      });
      msg.on("attributes", function (attrs) {
        console.log(attrs);
      });
      msg.on("end", function () {});
    });

    fetchQuery.once("error", function (err) {
      console.log(err);
    });
    fetchQuery.on("end", function () {});
  });
});

So here on mail event triggered when mails arrive , and i am searching recent mails on those mails.

0

There are 0 best solutions below