こんにちは!
今回は「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();
雑な説明となってしまい、申し訳ありませんが、これで取得できると思います。
以上、お疲れさまでした〜🍵