UNPKG

@hyperbytes/wappler-imap-manager

Version:

IMAP eMail Management for Wappler

54 lines (44 loc) 2 kB
const Imap = require('imap'); const { inspect } = require('util'); exports.imapcount = async function (options, name) { const IMAP_HOST = this.parseOptional(options.imap_host, '*', process.env.IMAP_HOST); const IMAP_PASSWORD = this.parseOptional(options.imap_password, '*', process.env.IMAP_PASSWORD); const IMAP_USER = this.parseOptional(options.imap_usesr, '*', process.env.IMAP_USER); const IMAP_PORT = this.parseOptional(options.imap_port, '*', process.env.IMAP_PORT); const imap_tlsstring = this.parseOptional(options.imap_tls, '*', process.env.IMAP_TLS).toLowerCase(); const IMAP_TLS = (imap_tlsstring == 'true'); // Retrieve mailbox name from options, default to 'INBOX' if not provided const mailbox = this.parseRequired(options.mailbox, '*', "No Mailbox specified"); function getEmailCount(config, mailbox) { return new Promise((resolve) => { const imap = new Imap(config); imap.once('ready', function () { imap.openBox(mailbox, true, function (err, box) { if (err) { imap.end(); return resolve({ mailbox: mailbox, count: 0, status: 401 }); } console.log(`Mailbox ${mailbox} contains ${box.messages.total} emails.`); resolve({ mailbox: mailbox, count: box.messages.total, status: 200 }); imap.end(); }); }); imap.once('error', function () { resolve({ mailbox: mailbox, count: 0, status: 401 }); }); imap.once('end', function () { console.log('IMAP Connection ended'); }); imap.connect(); }); } // Config setup const config = { user: IMAP_USER, password: IMAP_PASSWORD, host: IMAP_HOST, port: IMAP_PORT, tls: IMAP_TLS }; return getEmailCount(config, mailbox); };