Initial release.
This commit is contained in:
55
modules/codeHandler.js
Normal file
55
modules/codeHandler.js
Normal file
@@ -0,0 +1,55 @@
|
||||
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 (mail.subject.trim() !== 'Verify your email address') return;
|
||||
if (!attributes) return;
|
||||
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);
|
||||
// else console.log('Email marked as seen');
|
||||
});
|
||||
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 };
|
||||
Reference in New Issue
Block a user