You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在node-imap的新邮件事件中获取邮件的相关信息

你当前使用的node-imap库的mail事件仅会推送新邮件的数量,不会直接返回邮件详情,需要主动拉取最新邮件的原始数据并解析后才能拿到你需要的三个字段,推荐搭配mailparser库解析邮件MIME格式,避免手动处理格式的麻烦。

第一步:安装依赖

npm install node-imap mailparser

调整后的完整可运行代码

let Imap = require('node-imap')
const { simpleParser } = require('mailparser')

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

imap.on('ready', () => {
    imap.openBox('INBOX', true, (err, box) => {
        if (err) console.log(err)
        else console.log('Recipient is ready for accepting')
    })
})

imap.on('mail', () => {
    // 拉取最新1封邮件
    const fetch = imap.seq.fetch('*', { bodies: '' })
    fetch.on('message', msg => {
        msg.on('body', stream => {
            // 解析邮件原始流
            simpleParser(stream, (err, parsed) => {
                if (err) return console.log(err)
                // 提取所需字段
                const senderEmail = parsed.from.value[0].address
                const emailTitle = parsed.subject
                const emailContent = parsed.text
                console.log(`Email author: ${senderEmail} Title: ${emailTitle}, Description: ${emailContent}`)
            })
        })
    })
    fetch.on('error', err => console.log('Fetch error: ' + err))
})

imap.connect()

注意事项

  • 如果你使用的是Gmail邮箱,需要先在邮箱设置中开启IMAP权限,若账号开启了二次验证,需要使用谷歌生成的应用密码替代账号密码填写到配置中。
  • 若需要同时处理多封新邮件,可以修改imap.seq.fetch的第一个参数,比如获取最新5封邮件写为'*:4'即可。

内容的提问来源于stack exchange,提问作者Shade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:39:02