首页 > 解决方案 > node-imap 模块在收件箱中接收旧电子邮件

问题描述

我正在使用 node-imap NPM 模块并从我的收件箱中获取所有电子邮件。添加新电子邮件时它工作得很好,但是当我从我的邮件客户端(Mac 邮件)中删除一封电子邮件并刷新代码时,node-imap 模块仍在收件箱中提取这封电子邮件。例如,如果我有一封@icloud.com 电子邮件,我在 Mac 邮件客户端的收件箱中删除了一封电子邮件,当我访问 www.icloud.com 时,它会从收件箱中删除,但当我通过node-imap 模块,电子邮件仍然存在。

请看下面的代码。

router.get('/get-imap-emails', (req, res) => {
const { email, password, incomingHost, port, tls, accountType } = req.query;
let emailMessages = []

var imap = new Imap({
    user: email,
    password: password,
    host: incomingHost,
    port: port,
    tls: tls
});

openInbox = cb => {
    imap.openBox('INBOX', true, cb);
}

imap.once('ready', () => {
    openInbox((err, box) => {
        if (err) throw err;
        getEmails(box.messages.total);
    });
});

imap.once('error', err => {
    console.log(err);
});

// Custom functions
getEmails = messageCount => {

    imap.search(['ALL'], (err, results) => {
        if (err) {
            console.log(err)
        } else {
            imap.fetch(results, {
                bodies: '',
                struct: true
            }).on('message', (message) => {
                message.on('body', (stream) => {

                    // Code to process email with mailparser
                });

            }).once('error', error => console.log(error)).once('end', () => {
                imap.end()
                res.status(200).send()                    
            });
        }
    });
}

imap.connect();
});

标签: node.jsnpmimapnode-imap

解决方案


推荐阅读