Узел Imap - закрыть открытое окно?

Я использую node-imap для подключения к серверу электронной почты. У меня около 20 пользователей, для которых я открываю соединение с сервером и слушаю новые письма.

Проблема в том, что для того, чтобы можно было сделать:

imap.once('mail', function(numNewMsgs) {
  console.log('');
});

Требуется, чтобы у вас была открытая коробка. Поэтому я всегда открываю коробку, которую никогда не закрываю. Мой поток выглядит следующим образом:

function search(imap) {
  imap.openBox('INBOX', true, (err, box) => {

    imap.once('mail', function() {
      search(imap);
    });
    imap.search(someConditions, function(err, results) {
      //do some stuff, fetch or whatever
    })
  })

}

Как видно, я вызываю функцию поиска изнутри себя, когда срабатывает почтовое событие. И тогда я открываю ящик, который не закрывал раньше.

Итак, наконец вопрос: это по какой-то причине хлопотно? Если это так, и я должен закрыть окно, как мне использовать событие "mail"?

@mscdex надеюсь, что вы видите это.

1 ответ

Решение

RFC IMAP указывает, что всякий раз, когда вы открываете другой почтовый ящик, когда он уже открыт, неявное закрытие происходит в предыдущем почтовом ящике перед открытием нового почтового ящика. Если при открытии нового почтового ящика произошла ошибка, почтовый ящик не будет открыт (поскольку предыдущий почтовый ящик все еще закрыт).

Другие вопросы по тегам