UNPKG

@hyperbytes/wappler-imap-manager

Version:

IMAP eMail Management for Wappler

70 lines (59 loc) 2.42 kB
const Imap = require('imap'); exports.imapdeletefolder = async function (options) { // Load IMAP credentials from environment variables 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'); let folder = this.parseRequired(options.imapfolder, '*', 'Folder to delete not specified'); const separator = process.env.IMAP_SUB_SEPARATOR || '/'; folder = folder.startsWith("INBOX" + separator) ? folder.substring(6) : folder; console.log('folder is: ' + folder) 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.connect(); imap.once('ready', () => { const folderPath = 'INBOX' + separator + folder; imap.delBox(folderPath, (err) => { if (err) { reject({ status: 400, message: `Error: ${err.message}` }); } else { resolve({ status: 200, message: `Folder "${folderPath}" deleted successfully.` }); } imap.end(); }); }); imap.once('error', (err) => { reject({ status: 401, message: `Connection error: ${err.message}` }); }); imap.once('end', () => { console.log('IMAP connection closed.'); }); }); }; // Example usage: (async () => { try { const createResult = await exports.imapcount({ imapfolder: folder }); console.log(createResult); const deleteResult = await exports.deleteFolder({ imapfolder: folder }); console.log(deleteResult); } catch (err) { console.error(err); } });