/node-mbox

mbox file parser for Node.js

Primary LanguageJavaScriptMIT LicenseMIT

node-mbox

mbox file parser for Node.js.

Backward incompatibility warning

From version 1.0.0 onwards, message data is passed around as Buffer instead of String.

You can call msg.toString([encoding]) to convert to a string, or explicitly set the encoding option (see below).

Install

From the NPM repository:

$ npm install node-mbox

From the Github repository:

$ git clone https://github.com/robertklep/node-mbox.git
$ cd node-mbox
$ npm install [-g]

Description

This module parses mbox files, as described here but not 100% conform to [https://tools.ietf.org/rfc/rfc4155.txt] still. Starting with version 0.1.0, it's pretty speedy, processing a 1.5GB mbox file in about 20 seconds.

Note that this module doesn't parse the mail messages themselves, for which other solutions exist (for example the quite able mailparser module from Andris Reinman).

Example

See the included example.js:

$ npm install mailparser
$ node example < test/test-4-message.mbox

Options

  • includeMboxHeader : predicate if include Mbox header i.e. FROM ... ... lines (false by default).

Usage

const {Mbox, MboxStream} = require('node-mbox');
const split = require('line-stream');

// Ways of use.

// 1. pass it a filename
const mbox    = new Mbox({ /* options */ });

// 2. pass it a stream and use custom line splitter.
const fs      = require('fs');
const mailbox = fs.createReadStream('filename');
const splitter= split('\n');
const mbox    = mailbox.pipe(splitter).pipe(new Mbox({ /* options */ }));

// 3. pass it a stream and use default line splitter
const fs      = require('fs');
const mailbox = fs.createReadStream('filename');
const mbox    = MboxStream(mailbox, { /* options */ }); // It does the same as in 2. case.

// Next, catch events generated:
mbox.on('data', function(msg) {
  // `msg` is a `Buffer` instance
  console.log('got a message', msg.toString());
});

mbox.on('error', function(err) {
  console.log('got an error', err);
});

mbox.on('finish', function() {
  console.log('done reading mbox file');
});

Testing

There is a limited number of tests:

$ cd /path/to/node-mbox/
$ npm test

License

MIT