Узел 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 указывает, что всякий раз, когда вы открываете другой почтовый ящик, когда он уже открыт, неявное закрытие происходит в предыдущем почтовом ящике перед открытием нового почтового ящика. Если при открытии нового почтового ящика произошла ошибка, почтовый ящик не будет открыт (поскольку предыдущий почтовый ящик все еще закрыт).