docker/ses-lambda-nodejs/email2json.js

44 lines
1.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
if (process.argv.length < 3) {
process.stdout.write('USAGE: nodejs emailtojson.js filename');
process.stdout.write('Example: nodejs emailtojson.js emailfile.eml');
return;
}
const fs = require('fs');
const { MailParser } = require("mailparser");
const mailpath = process.argv[2];
let parser = new MailParser();
let input = fs.createReadStream(mailpath);
let mailobj = {
attachments: [],
text: {}
};
parser.on('headers', headers => {
let headerObj = {};
for (let [k, v] of headers) {
// We dont escape the key '__proto__'
// which can cause problems on older engines
headerObj[k] = v;
}
mailobj.headers = headerObj;
});
parser.on('data', data => {
if (data.type === 'attachment') {
mailobj.attachments.push(data);
data.content.on('readable', () => data.content.read());
data.content.on('end', () => data.release());
} else {
mailobj.text = data;
}
});
parser.on('end', () => {
process.stdout.write(JSON.stringify(mailobj, (k, v) => (k === 'content' || k === 'release' ? undefined : v), 3));
});
input.pipe(parser);