@hyperbytes/wappler-imap-manager
Version:
IMAP eMail Management for Wappler
48 lines (38 loc) • 1.76 kB
JavaScript
const Imap = require('imap');
exports.imapsubscribe = async function (options) {
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');
const foldername = this.parseOptional(options.foldername, '*', 'No Folder Specified');
return new Promise((resolve, reject) => {
const imap = new Imap({
user: IMAP_USER,
password: IMAP_PASSWORD,
host: IMAP_HOST,
port: IMAP_PORT,
tls: IMAP_TLS,
tlsOptions: {
rejectUnauthorized: process.env.IMAP_CERTIFICATE_OVERRIDE === '1' ? false : true
}
});
imap.once('ready', () => {
imap.subscribeBox(foldername, (err) => {
imap.end();
if (err) {
return reject({ status: 400, message: `Error subscribing to folder '${foldername}': ${err.message}` });
}
resolve({ status: 200, message: `Successfully subscribed to folder '${foldername}'` });
});
});
imap.once('error', (err) => {
reject({ status: 401, message: `Connection error: ${err.message}` });
});
imap.once('end', () => {
console.log('IMAP connection closed.');
});
imap.connect();
});
};