如何使用node.js imapflow连接到Gmail ?



我使用imapflow包如下:

import config from './config.js';
import { ImapFlow } from 'imapflow';
const client = new ImapFlow({
host: 'imap.gmail.com',
port: 993,
secure: true,
auth: {
user: 'muhemail@gmail.com',
pass: '123'
}
});
await client.connect();
console.log('OK');

Invalid credentials (Failure)一起抛出。我已经检查了四遍登录名和密码是否正确,GMail设置中启用了IMAP。不过,不太安全的应用程序是不启用的,我更愿意保持这种状态。当我尝试在雷鸟中使用相同的凭据时,它会打开一个OAuth登录窗口,我想我应该以某种方式将其与imapflow合并?还是有不同的解决方案?

Gmail不允许使用普通用户名和密码访问其IMAP服务。你应该首先通过Gmail api示例获得OAuth2.0凭据,然后将其转换为xoauth2。

let {installed: {client_id, client_secret}} = require('./client_secret') // the client_secret.json file
let xoauth2gen = xoauth2.createXOAuth2Generator({
user: '*******', // the email address
clientId: client_id,
clientSecret: client_secret,
refreshToken: refresh_token
})
xoauth2gen.getToken(function(err, xoauth2token) {
if (err) {
return console.log(err)
}

let imap = new Imap({
xoauth2: xoauth2token,
host: 'imap.gmail.com',
port: 993,
tls: true,
authTimeout: 10000,
debug: console.log,
})

最新更新