node-imap ::如何直接获取已到达的电子邮件而不是使用搜索过滤器

时间:2016-08-01 18:27:07

标签: node.js email imap

我在node-imap(https://github.com/mscdex/node-imap)上写了一个包装器。目前我正在使用since标志来搜索到达特定收件箱的电子邮件。对于我收听的每封电子邮件,我都会调用imap.search()方法,然后调用imap.fetch()方法。是否可以在没有imap.search()方法的情况下直接获取电子邮件。  提供我当前代码的片段。

self.imap.on("mail", function(id) {
 self.parseUnreadEmails(time)
});

MailListener.prototype.parseUnreadEmails = function(time) {
var self = this;

 self.imap.search([["SINCE", time]], function(error, searchResults) {
     var fetch;
     if (error) {
         self.emit("error", error);
     } else {
         fetch = self.imap.fetch(searchResults, {
             bodies: '',
             markSeen: true
         })
     }
     //do some action       

 }
}

1 个答案:

答案 0 :(得分:0)

如果您希望监控并获取到达特定邮箱的新邮件,可以通过多种方式执行此操作,以下是一些可以使用的有效建议。

  1. 使用IDLE命令 - 是的,使用此命令可以将文件夹置于空闲状态,并在新邮件到达或有任何标志更改时监视EXISTS / EXPUNGE响应。请阅读此RFC。一旦使用IDLE命令进行约束,您必须为特定文件夹设置专用的tcp连接,则无法在单个IDLE命令中监视多个文件夹。
  2. 在合理的时间间隔内频繁轮询STATUS(UIDNEXT MESSAGECOUNT)命令。这将告诉你uidnext(如果从以前的值有任何变化,你应该找到差异并获取这些邮件)。在继续之前仔细阅读IMAP RFC。