【问题标题】:I'm using IMAP npm library for fetching mails which says "invalid credentials"我正在使用 IMAP npm 库来获取显示“无效凭据”的邮件
【发布时间】:2019-10-21 20:04:14
【问题描述】:

我正在使用 IMAP 库从 gmail 获取电子邮件。我得到了Read email body with node js imaphttps://www.npmjs.com/package/imap 的参考。

我的实现如下:

    var Imap = require('imap'),
        inspect = require('util').inspect;

    var imap = new Imap({
        user: 'xxx@gmail.com',
        password: 'xxxxxx',
        host: 'imap.gmail.com',
        port: 993,
        tls: true
    });

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

    imap.once('ready', function() {
        openInbox(function(err, box) {
            if (err) throw err;
            var f = imap.seq.fetch('1:3', {
                bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)',
                struct: true
            });
            f.on('message', function(msg, seqno) {
                console.log('Message #%d', seqno);
                var prefix = '(#' + seqno + ') ';
                msg.on('body', function(stream, info) {
                    var buffer = '';
                    stream.on('data', function(chunk) {
                        buffer += chunk.toString('utf8');
                    });
                    stream.once('end', function() {
                        console.log(prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer)));
                    });
                });
                msg.once('attributes', function(attrs) {
                    console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8));
                });
                msg.once('end', function() {
                    console.log(prefix + 'Finished');
                });
            });
            f.once('error', function(err) {
                console.log('Fetch error: ' + err);
            });
            f.once('end', function() {
                console.log('Done fetching all messages!');
                imap.end();
            });
        });
    });

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

    imap.once('end', function() {
        console.log('Connection ended');
    });

    imap.connect();

注意:用户名/密码正确,我已在我的 gmail 帐户中启用 IMAP/POP,但仍然出现以下错误:

    { Error: Invalid credentials (Failure)
        at Connection._resTagged (xxx/server/node_modules/imap/lib/Connection.js:1502:11)
        at Parser.<anonymous> (xxx/server/node_modules/imap/lib/Connection.js:194:10)
        at Parser.emit (events.js:193:13)
        at Parser._resTagged (xxx/server/node_modules/imap/lib/Parser.js:175:10)
        at Parser._parse (xxx/server/node_modules/imap/lib/Parser.js:139:16)
        at Parser._tryread (xxx/server/node_modules/imap/lib/Parser.js:82:15)
        at TLSSocket.Parser._cbReadable (xxx/server/node_modules/imap/lib/Parser.js:53:12)
        at TLSSocket.emit (events.js:193:13)
        at emitReadable_ (_stream_readable.js:550:12)
        at processTicksAndRejections (internal/process/task_queues.js:81:17)
        type: 'no',
            textCode: 'AUTHENTICATIONFAILED',
        source: 'authentication' }
    Connection ended

【问题讨论】:

标签: node.js imap


【解决方案1】:

注意:如果使用 Gmail 帐户,您需要做两件事:

  1. 在您的 Gmail 帐户设置中启用 IMAP,详细说明 here
  2. 授权“不太安全的应用程序”,您在“选项 2”here 中进行了说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 2011-12-26
    • 1970-01-01
    • 2023-03-03
    • 2018-03-27
    • 2014-10-15
    相关资源
    最近更新 更多