0

在我们的项目中,我们使用“imap”节点模块连接到 ms office Outlook 邮件服务器,并且我们正在使用 imap 模块执行许多操作,例如 fetch、getBoxes、搜索、setFlags 等。

我们的服务器正在尝试每分钟在邮件服务器上执行上述操作,并且正在运行许多并行流程来执行此操作。并行流只不过是在 imap 服务器上并行执行上述操作。

但是一段时间后,所有流程开始返回 401,这是 imap 模块正在返回的。我们的代码几乎如下所示:

var Imap = require('imap')
var imap = new Imap({
    user: 'xxx@xx.com',
    password: 'xxxx',
    host: 'outlook.office365.com',
    port: 993,
    tls: true
});

imap.once('ready', function () {
  imap.openBox('inbox', false, function (err, box) {
    if (err) throw err;
    var msgno = 1;
    let fetchCheck = imap.seq.fetch(msgno + ':*', { bodies: [''] });
    fetchCheck.on('message', function (msg, seqno) {
      if (seqno == msgno) {
        imap.seq.setFlags(seqno, 'Seen', function (err) {
          if (err) {
            return err;
          } else {
            imap.end();
          }
        });
      }
    })
    fetchCheck.once('error', function (err) {
      imap.end();
      imap.closeBox();
    });
  });
});
imap.once('error', function (err) {
  console.log(err);
});
imap.once('end', function () {
  console.log('Done flagging message');
  console.log('Connection ended');
});
imap.connect();

与上面的代码一样,我们也在邮件服务器上使用搜索、获取、移动操作来执行,所有这些操作都是并行运行的。所以过了一段时间,突然这些并行流开始给出 401 错误:在与服务器进行身份验证时超时。

办公室邮件服务器是否有任何连接限制或“imap”节点模块对连接处理的限制?

4

0 回答 0