Parse .eml files or convert to pdf, html, jpeg or png format. Extract headers and attachments from .eml files.
npm i eml-parser --save
const EmlParser = require('eml-parser');
const fs = require('fs');
let emailFile = fs.createReadStream('./test.eml');
new EmlParser(emailFile).convertEmailToStream('pdf')
.then(stream => {
stream.pipe(fs.createWriteStream(emailFile.path + '.pdf'));
})
.catch(err => {
console.log(err);
})
new EmlParser(fs.createReadStream('test.eml'))
constructor takes a Read Stream as input
new EmlParser(fs.createReadStream('test.eml'))
.parseEml()
.then(result => {
//properties in result object:
//{
// "attachments": [],
// "headers": {},
// "headerLines": [],
// "html": "",
// "text": "",
// "textAsHtml": "",
// "subject": "",
// "references": "",
// "date": "",
// "to": {},
// "from": {},
// "cc": {},
// "messageId": "",
// "inReplyTo": ""
}
console.log(result);
})
.catch(err => {
console.log(err);
})
new EmlParser(fs.createReadStream('test.eml'))
.getEmailHeaders()
.then(headers => {
//properties of headers object
//{
// subject: result.subject,
// from: result.from.value,
// to: result.to.value,
// cc: result.cc.value,
// date: result.date,
// inReplyTo: result.inReplyTo,
// messageId: result.messageId
//}
console.log(headers)
})
.catch(err => {
console.log(err);
})
returns email content as a html string (without headers like subject, from, etc)
new EmlParser(fs.createReadStream('test.eml'))
.getEmailBodyHtml()
.then(htmlString => {
fs.writeFileSync('abc.html',htmlString) ;
})
.catch(err => {
console.log(err);
})
returns whole email as a html string (including headers like subject, from, etc)
new EmlParser(fs.createReadStream('test.eml'))
.getEmailAsHtml()
.then(htmlString => {
fs.writeFileSync('abc.html',htmlString) ;
})
.catch(err => {
console.log(err);
})
- takes 1 optional argument
type:'pdf'|'jpeg'|'png
, defaults to: 'pdf' returns a stream which can be piped to a Write Stream to write to a file.
let file = fs.createReadStream('test.eml')
new EmlParser(file)
.convertEmailToStream('png')
.then(stream => {
stream.pipe(fs.createWriteStream(file.path + '.png'));
})
.catch(err => {
console.log(err);
})
- takes 1 optional argument
type:'pdf'|'jpeg'|'png
, defaults to: 'pdf' returns a buffer object which can be used to write to a file using fs.write.
let file = fs.createReadStream('test.eml')
new EmlParser(file)
.convertEmailToBuffer('png')
.then(buffer => {
//use fs.write to write into file
})
.catch(err => {
console.log(err);
})
- takes 1 optional argument
type:'pdf'|'jpeg'|'png
, defaults to: 'pdf' returns a buffer object which can be used to write to a file using fs.write.
let file = fs.createReadStream('test.eml')
new EmlParser(file)
.getEmailAttachments()
.then(attachments => {
attachments.forEach(attch => {
//attch.content is the buffer object
console.log(attch.filename, attach.content);
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
})
});
})
.catch(err => {
console.log(err);
})