プログラミング バックエンド

【Node.js】メールのタイトルや本文を取得する方法

こんにちは!

今回は「Javascript(Node.js)でメールのタイトルや本文を取得する方法」について共有したいと思います。

GAS以外を使わずにできるのか調べてみました。

node-imapモジュールを使ってメールのタイトルや本文を取得する

以下にサンプルコードを交えてお伝えします。

// 例
const Imap = require('node-imap');

const imap = new Imap({
  user: 'test@example.com',
  password: 'hoge',
  host: 'xxx.ne.jp',
  port: 993,
  tls: true
});

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

imap.once('ready', function() {
  openInbox(function(err, box) {
    if (err) throw err;
    const fetchOptions = { bodies: ['HEADER.FIELDS (FROM TO SUBJECT DATE)', 'TEXT'], markSeen: true };
    const fetch = imap.seq.fetch(box.messages.total + ':*', fetchOptions);
    fetch.on('message', function(msg, seqno) {
      const emailData = { headers: '', body: '' };

      msg.on('body', function(stream, info) {
        let buffer = '';
        stream.on('data', function(chunk) {
          buffer += chunk.toString('utf8');
        });
        stream.on('end', function() {
          if (info.which === 'TEXT') {
            emailData.body = buffer;
          }
        });
      });

      msg.on('headers', function(header) {
        emailData.headers = header;
      });

      msg.once('end', function() {
        console.log('Email', seqno);
        console.log('Headers', emailData.headers);
        console.log('Body', emailData.body);
      });
    });

    fetch.once('error', function(err) {
      console.log('Fetch error: ' + err);
    });

    fetch.once('end', function() {
      imap.end();
    });
  });
});

imap.connect();

雑な説明となってしまい、申し訳ありませんが、これで取得できると思います。

以上、お疲れさまでした〜🍵

-プログラミング, バックエンド
-

© 2024 エンジニア×ライフハック Powered by AFFINGER5