73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
const Pop3Command = require("node-pop3");
|
|
const fs = require("fs");
|
|
const net = require('net');
|
|
const { EventEmitter } = require("events");
|
|
|
|
const imap = require("./imap");
|
|
|
|
const initalConfig = `{
|
|
"pop3-config": {
|
|
"user": "example",
|
|
"password": "example",
|
|
"host": "pop3.example.com"
|
|
}
|
|
}`;
|
|
|
|
try {
|
|
fs.readFileSync("./config.json");
|
|
} catch (e) {
|
|
fs.writeFileSync("./config.json", initalConfig, {
|
|
encoding: "utf-8"
|
|
});
|
|
console.warn("WARNING config.json is empty. This file was been created. Please, configure it.");
|
|
return process.exit();
|
|
}
|
|
|
|
global.config = require("./config.json");
|
|
|
|
class POP3 extends EventEmitter {
|
|
constructor () {
|
|
super();
|
|
this.pop3cmd = new Pop3Command(global.config["pop3-config"]);
|
|
}
|
|
|
|
async init () {
|
|
const msg = (
|
|
await pop3.pop3cmd.UIDL()
|
|
).map(async x => {
|
|
x[1] = {
|
|
uid: x[1],
|
|
msg: await pop3.pop3cmd.RETR(+x[0])
|
|
}
|
|
return x;
|
|
});
|
|
this.msg = Object.fromEntries(
|
|
await Promise.all(msg)
|
|
);
|
|
}
|
|
}
|
|
|
|
const pop3 = new POP3();
|
|
pop3.init().then(() => {
|
|
let interval = setTimeout(async () => {
|
|
console.log(pop3.msg);
|
|
//const list = await pop3.pop3cmd.UIDL();
|
|
//console.log(list);
|
|
//const str = await pop3.pop3cmd.RETR(1);
|
|
//console.log(str);
|
|
}, 1);
|
|
});
|
|
|
|
imap.listen(
|
|
global.config["imap-config"].port,
|
|
global.config["imap-config"].host,
|
|
(err) => {
|
|
if (err) throw err;
|
|
console.log(`IMAP server running on ${
|
|
global.config["imap-config"].host
|
|
}:${
|
|
global.config["imap-config"].port
|
|
}`);
|
|
}
|
|
);
|