added method to fetch message content for RETR

This commit is contained in:
Andris Reinman 2017-04-08 15:52:39 +03:00
parent 6f615127b6
commit 148ea9727b

30
pop3.js
View file

@ -5,10 +5,14 @@ const log = require('npmlog');
const POP3Server = require('./lib/pop3-server');
const fs = require('fs');
const bcrypt = require('bcryptjs');
const MessageHandler = require('./lib/message-handler');
const ObjectID = require('mongodb').ObjectID;
const db = require('./lib/db');
const MAX_MESSAGES = 5000;
let messageHandler;
const serverOptions = {
port: config.pop3.port,
host: config.pop3.host,
@ -90,6 +94,30 @@ const serverOptions = {
});
});
});
},
// FIXME: check how size is calculated. seems to be wrong sometimes
onFetchMessage(session, id, callback) {
db.database.collection('messages').findOne({
_id: new ObjectID(id)
}, {
mimeTree: true,
size: true
}, (err, message) => {
if (err) {
return callback(err);
}
if (!message) {
return callback(new Error('Message does not exist or is already deleted'));
}
let response = messageHandler.indexer.rebuild(message.mimeTree);
if (!response || response.type !== 'stream' || !response.value) {
return callback(new Error('Can not fetch message'));
}
callback(null, response.value);
});
}
};
@ -110,6 +138,8 @@ module.exports = done => {
let started = false;
messageHandler = new MessageHandler(db.database);
server.on('error', err => {
if (!started) {
started = true;