mirror of
https://github.com/nodemailer/wildduck.git
synced 2025-09-11 07:34:48 +08:00
added method to fetch message content for RETR
This commit is contained in:
parent
6f615127b6
commit
148ea9727b
1 changed files with 30 additions and 0 deletions
30
pop3.js
30
pop3.js
|
@ -5,10 +5,14 @@ const log = require('npmlog');
|
||||||
const POP3Server = require('./lib/pop3-server');
|
const POP3Server = require('./lib/pop3-server');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const bcrypt = require('bcryptjs');
|
const bcrypt = require('bcryptjs');
|
||||||
|
const MessageHandler = require('./lib/message-handler');
|
||||||
|
const ObjectID = require('mongodb').ObjectID;
|
||||||
const db = require('./lib/db');
|
const db = require('./lib/db');
|
||||||
|
|
||||||
const MAX_MESSAGES = 5000;
|
const MAX_MESSAGES = 5000;
|
||||||
|
|
||||||
|
let messageHandler;
|
||||||
|
|
||||||
const serverOptions = {
|
const serverOptions = {
|
||||||
port: config.pop3.port,
|
port: config.pop3.port,
|
||||||
host: config.pop3.host,
|
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;
|
let started = false;
|
||||||
|
|
||||||
|
messageHandler = new MessageHandler(db.database);
|
||||||
|
|
||||||
server.on('error', err => {
|
server.on('error', err => {
|
||||||
if (!started) {
|
if (!started) {
|
||||||
started = true;
|
started = true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue