首页 > 解决方案 > 通过 node.js 中的 imap-simple 获取看不见的消息并将它们标记为已读

问题描述

我正在尝试通过 node.js 的 imap-simple 模块获取所有看不见的消息。我可以成功地得到它并通过以下代码将它们标记为已读。

如果有不止一封新电子邮件,它会完美运行。但是,如果收件箱中只有一封新的后续邮件,则代码仅将其标记为已读,而不会阅读该邮件。但是,手动将一封电子邮件标记为未读,然后代码可以读取该电子邮件并将其标记为未读。

var config = {
imap: {
    user: 'sd@sdf.com', 
    password: 'dcbfmgh', 
    host: 'imap.gfggdf.com', 
    port: 993,
    tls: true,
     authTimeout:3000,
    tlsOptions: { rejectUnauthorized: false }
      }}; 
       imaps.connect(config).then(function (connection) {
     return connection.openBox('INBOX'/*,false*/).then(function () {
    var searchCriteria = ['UNSEEN'];  //UNSEEN
    var fetchOptions = {
        bodies: ['HEADER', 'TEXT', ''],
        markSeen: true,
    };
    return connection.search(searchCriteria, fetchOptions).then(function (messages) {
        console.log('reading...');
        messages.forEach(function (item) {
            var all = _.find(item.parts, { "which": "" })
            var id = item.attributes.uid;
            var idHeader = "Imap-Id: "+id+"\r\n";
            simpleParser(idHeader+all.body, (err, mail) => {
               
                  console.log(mail.from.value[0].address); 
                    
               console.log(mail.subject)
            });
        });
    });
});});

标签: node.jsemailimap

解决方案


推荐阅读