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

如何用Node.js的nodemailer读取收件箱邮件主题?

解决Nodemailer无法读取收件箱邮件主题的问题

Nodemailer的核心功能是发送邮件,并不提供收件箱读取能力。要读取收件箱邮件主题,需要借助支持IMAP/POP3协议的工具库,搭配邮件解析库实现。

实现方案

  • 先安装所需依赖:imap-simple用于建立IMAP连接读取邮件头,mailparser可辅助解析复杂编码的邮件内容
    npm install imap-simple mailparser
    
  • 编写读取收件箱主题的代码示例:
    const imaps = require('imap-simple');
    const { simpleParser } = require('mailparser');
    
    // 邮箱IMAP配置(需提前开启对应邮箱的IMAP服务)
    const imapConfig = {
      imap: {
        user: '你的邮箱账号',
        password: '邮箱授权码', // 注意:部分邮箱需用授权码而非登录密码
        host: 'imap.xxx.com', // 例如imap.qq.com、imap.gmail.com
        port: 993,
        tls: true,
        authTimeout: 3000
      }
    };
    
    async function fetchInboxSubjects() {
      // 建立IMAP连接
      const connection = await imaps.connect(imapConfig);
      await connection.openBox('INBOX');
    
      // 搜索条件:这里取全部邮件,也可改为['UNSEEN']取未读邮件
      const searchRules = ['ALL'];
      // 只获取邮件头信息(包含主题),避免加载冗余内容
      const fetchOptions = {
        bodies: ['HEADER'],
        markSeen: false // 是否将读取的邮件标记为已读
      };
    
      const mailList = await connection.search(searchRules, fetchOptions);
      const subjectList = [];
    
      for (const mail of mailList) {
        const headerData = mail.parts[0].body;
        // 解析邮件主题(自动处理编码转换)
        const mailSubject = imaps.parseHeader(headerData).subject[0];
        subjectList.push(mailSubject);
      }
    
      // 关闭连接
      await connection.end();
      return subjectList;
    }
    
    // 调用示例
    fetchInboxSubjects().then(subjects => {
      console.log('收件箱邮件主题:', subjects);
      // 后续业务逻辑处理
    }).catch(err => {
      console.error('读取失败:', err);
    });
    

关键注意点

  • 必须开启对应邮箱的IMAP服务(如QQ邮箱需在设置中开启IMAP并生成授权码)
  • 不同邮箱的IMAP地址、端口可能有差异,需根据邮箱官方文档调整配置
  • 若需解析完整邮件内容,可修改fetchOptions获取邮件正文,再用simpleParser进行解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:42:06