const MailListener = require('mail-listener2'); const mailListener = new MailListener({ username: process.env.MAIL_USER, password: process.env.MAIL_PASSWORD, host: process.env.MAIL_HOST, port: process.env.MAIL_PORT, tls: true, }); mailListener.on('server:connected', function() { console.log('imapConnected'); }); mailListener.on('server:disconnected', function() { console.log('imapDisconnected'); }); mailListener.on('error', function(err) { console.log(err); }); function getCodeFromEmail() { return new Promise((resolve) => { mailListener.on('mail', function(mail, seqno, attributes) { if (!attributes) return; if (mail.subject.trim() == 'Verify your email address') { const text = mail.text.trim(); const match = text.match(/code: (\d+)/i); if (match) { const imap = mailListener.imap; imap.addFlags(attributes.uid, '\\Seen', (err) => { if (err) console.log('Error marking email as seen:', err); }); resolve(match[1]); } } else if (mail.subject.trim() == 'AWS Email Verification') { const text = mail.text.trim(); const match = text.match(/code:\s*(\d+)/i); if (match) { const imap = mailListener.imap; imap.addFlags(attributes.uid, '\\Seen', (err) => { if (err) console.log('Error marking email as seen:', err); }); resolve(match[1]); } } }); }); } function connect() { mailListener.start(); } function disconnect() { mailListener.stop(); } mailListener.on('attachment', function(attachment) { console.log(attachment.path); }); module.exports = { getCodeFromEmail, connect, disconnect };