Node.js で imap サーバーからメールを受信する方法です。
ライブラリーは、inbox を使います。
sudo npm install inbox
imap_get.js
# ! /usr/bin/node
// ---------------------------------------------------------------
// imap_get.js
//
// Nov/26/2017
//
// ---------------------------------------------------------------
var inbox = require("inbox")
const server = "imap.mail.yahoo.co.jp"
const user = "xxxxxx"
const password = "yyyyyy"
var client = inbox.createConnection(false, server, {
secureConnection: true,
auth:{
user: user,
pass: password
}
})
client.connect()
// ---------------------------------------------------------------
client.on("connect", function()
{
console.log ("*** connected ***")
client.openMailbox("INBOX", function(error, info)
{
if(error) throw error;
client.listMessages(-10, function(err, messages)
{
messages.forEach(function(message)
{
const uid = message.UID
console.log(uid)
console.log("Name: " + message.from.name)
console.log("Address: " + message.from.address)
console.log("Title: " + message.title)
// client.createMessageStream(uid).pipe(process.stdout, {end: false})
});
client.close()
})
})
})
// ---------------------------------------------------------------
client.on('close', function (){
console.log('*** disconnected! ***');
})
// ---------------------------------------------------------------
次の環境で動作を確認しました。
$ uname -a
Linux iwata 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ node --version
v14.8.0