NodeJS Сервер опроса IMAP возвращает ошибку входа - PullRequest
0 голосов
/ 28 апреля 2020

Я хотел бы проверять электронную почту каждые T минут, используя модуль imap для NodeJS. Поэтому я установил таймер:

_pollingTimer = setInterval(receiveEmails, constants.POLLING_TIME * 60 * 1000); // POLLING_TIME minutes polling

, тогда как функция receiveEmails выглядит следующим образом:

function receiveEmails() {
    const imap = new Imap({
        user: user_name,
        password: user_pwd,
        host: host_name,
        port: host_port_imap,
        tls: true
    });

    imap.once('ready', function () {
        imap.openBox('INBOX', false, function (err, box) { //false means write enable
            if (err) throw err;
            imap.search(['UNSEEN'], function (err, results) {
                if (err) throw err;
                else if (!results || !results.length) {
                    logger.debug(`No new messages on the INBOX`);
                }
                else {
                    var f = imap.fetch(results, { bodies: ''});
                    f.on('message', _processMessage);
                    f.once('error', function (err) { console.log('Fetch error: ' + err); });
                    f.once('end', function() {
                        logger.debug(`Done fetching all messages!`);
                        imap.end();
                      });
                }
            });
        });
    });
    imap.once('error', function (err) {
        logger.error(`${err}`);
    });
    imap.once('end', function () {
        logger.debug(`IMAP connection ended`);        
    });

    imap.connect();
}

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

Я попытался объявить переменную imap вне функции, но ничего не изменилось.

Итак, как я могу периодически проверять наличие новых писем, избегая переподключений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...