pop3-to-imap/server.js
2025-05-27 04:09:38 +03:00

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
}`);
}
);