56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
const MailListener = require('mail-listener2');
|
|
|
|
async function getCodeFromEmail() {
|
|
return new Promise((resolve) => {
|
|
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('imap server connected');
|
|
});
|
|
|
|
mailListener.on('server:disconnected', function() {
|
|
console.log('imap server disconnected');
|
|
});
|
|
|
|
mailListener.on('error', function() {
|
|
console.log('imap error handling');
|
|
});
|
|
|
|
mailListener.start();
|
|
|
|
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);
|
|
});
|
|
mailListener.stop();
|
|
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);
|
|
});
|
|
mailListener.stop();
|
|
resolve(match[1]);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = { getCodeFromEmail }; |