@hyperbytes/wappler-imap-manager
Version:
IMAP eMail Management for Wappler
51 lines (41 loc) • 1.61 kB
JavaScript
const Imap = require('imap');
exports.imapcreatefolder = async function (options) {
// Load IMAP credentials from environment variables
const IMAP_USER = process.env.IMAP_USER;
const IMAP_PASSWORD = process.env.IMAP_PASSWORD;
const IMAP_HOST = process.env.IMAP_HOST;
const IMAP_PORT = process.env.IMAP_PORT;
const IMAP_TLS = true
const imapfolder = this.parseRequired(options.imapfolder, '*', "No folder specified'")
const separator = process.env.IMAP_SUB_SEPARATOR || '/';
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 + imapfolder;
imap.addBox(folderPath, (err) => {
if (err) {
reject({ status: 400, message: `Error: ${err.message}` });
} else {
resolve({ status: 200, message: `Folder "${folderPath}" created successfully.` });
}
imap.end();
});
});
imap.once('error', (err) => {
reject({ status: 401, message: `Connection error: ${err.message}` });
});
imap.once('end', () => {
console.log('IMAP connection closed.');
});
});
};