Nodejs nodemailer发送邮件可以,可以不可以收邮件即读取邮箱邮件

Nodejs nodemailer发送邮件可以,可以不可以收邮件即读取邮箱邮件

nodemailer发送邮件可以,可以不可以收邮件即读取邮箱邮件。求高人指点

3 回复

当然可以!nodemailer 主要用于发送邮件,但如果你需要读取邮件(例如从 POP3 或 IMAP 邮箱读取邮件),你可以使用 mailparserimap 这样的库来实现。

以下是一个简单的示例代码,展示如何使用 imap 库来读取邮箱中的邮件:

安装依赖

首先,你需要安装 imapmailparser 库:

npm install imap mailparser

示例代码

const Imap = require('imap');
const MailParser = require("mailparser").MailParser;
const fs = require('fs');

// 创建 IMAP 连接
let imap = new Imap({
    user: 'your-email@example.com',
    password: 'your-password',
    host: 'imap.example.com',
    port: 993,
    tls: true
});

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

imap.once('ready', () => {
    console.log('IMAP connection ready');
    openInbox((err, box) => {
        if (err) throw err;
        
        let f = imap.seq.fetch('1:*', { bodies: ['HEADER', 'TEXT'], struct: true });
        
        f.on('message', (msg, seqno) => {
            console.log(`Processing Message ${seqno}`);
            
            let parser = new MailParser();
            
            msg.on('body', (stream, info) => {
                stream.pipe(parser);
            });
            
            msg.once('end', () => {
                let email = parser.finish();
                console.log(`Subject: ${email.subject}`);
                console.log(`From: ${email.from[0].address}`);
                console.log(`To: ${email.to[0].address}`);
                console.log(`Text: ${email.text}`);
            });
        });
        
        f.once('error', (err) => {
            console.error(err);
        });
        
        f.once('end', () => {
            console.log('Done fetching all messages!');
            imap.end(); // 关闭连接
        });
    });
});

imap.once('error', (err) => {
    console.error(err);
});

imap.once('end', () => {
    console.log('IMAP connection ended');
});

imap.connect();

代码解释

  1. 创建 IMAP 连接:使用 imap 对象创建一个 IMAP 连接到你的邮箱服务器。
  2. 打开收件箱:使用 openBox 方法打开收件箱。
  3. 获取邮件:使用 seq.fetch 方法获取指定范围内的邮件。
  4. 解析邮件:使用 mailparser 解析邮件的头部和正文,并打印出来。
  5. 处理错误和结束事件:确保在处理过程中处理任何错误,并在完成后关闭连接。

通过这种方式,你可以在 Node.js 中读取并解析来自 IMAP 邮箱的邮件。希望这对你有帮助!


非常感谢,我看一下啊,能否留下你的联系方式,以便沟通,谢谢

nodemailer 主要用于发送电子邮件,而不是接收或读取电子邮件。不过,你可以使用其他库来实现从邮箱读取邮件的功能。常用的库包括 mailparserimap

以下是一个简单的示例,展示如何使用 imap 库从 Gmail 邮箱中读取邮件:

  1. 安装依赖:

    npm install imap mailparser
    
  2. 示例代码:

    const Imap = require('imap');
    const MailParser = require("mailparser").MailParser;
    const fs = require("fs");
    
    let mailStream;
    
    // 创建 IMAP 连接
    const imap = new Imap({
      user: 'your-email@gmail.com',
      password: 'your-password',
      host: 'imap.gmail.com',
      port: 993,
      tls: true
    });
    
    function openInbox(cb) {
      imap.openBox('INBOX', true, cb);
    }
    
    imap.connect();
    
    imap.once('ready', () => {
      console.log('IMAP Connection established successfully.');
      openInbox((err, box) => {
        if (err) throw err;
    
        const f = imap.seq.fetch('1:*', { bodies: ['HEADER.FIELDS (FROM TO DATE SUBJECT)', 'TEXT'], struct: true });
        f.on('message', (msg, seqno) => {
          console.log(`Processing Message #${seqno}`);
          mailStream = msg.on('parts', parts => {
            parts.forEach(part => {
              if (part.id === '') {
                part.on('data', data => {
                  mailStream.pipe(new MailParser()).on('headers', headers => {
                    console.log(`From: ${headers.from.text}`);
                    console.log(`To: ${headers.to.text}`);
                    console.log(`Subject: ${headers.subject}`);
                  }).on('text', text => {
                    console.log(text.text);
                  });
                });
              }
            });
          });
        });
    
        f.on('error', err => {
          console.log(err);
        });
    
        f.end();
      });
    });
    
    imap.once('error', err => {
      console.log(err);
    });
    
    imap.once('end', () => {
      console.log('Connection ended');
    });
    

解释

  • imap: 使用 imap 库创建一个 IMAP 连接,连接到 Gmail 邮箱。
  • openInbox: 打开收件箱。
  • f.on('message'): 处理每个邮件。
  • mailStream: 使用 mailparser 解析邮件内容。
  • console.log: 输出邮件的发件人、收件人和主题以及邮件正文。

通过这种方式,你可以从邮箱中读取邮件内容。注意,由于安全原因,Gmail 可能需要你生成一个应用专用密码,而不是直接使用你的账户密码。

回到顶部