Email Parser Nodejs

Setting Up Your Node.js Environment for Email Parsing

Before diving into email parsing, ensure you have Node.js installed. Begin by creating a new Node.js project and installing the required dependencies.

mkdir email-parser
cd email-parser
npm init -y
npm install nodemailer mailparser

Receiving and Parsing Emails

To parse emails, you need to fetch them from a mail server. IMAP and POP3 are popular protocols for this. For this guide, we will use node-imap and mailparser packages.

First, install the necessary packages:

npm install node-imap

Then, create a script to connect to the mail server and fetch emails.

const Imap = require('node-imap');
const { simpleParser } = require('mailparser');

const imapConfig = {
  user: '[email protected]',
  password: 'your-email-password',
  host: 'imap.example.com',
  port: 993,
  tls: true
};

const imap = new Imap(imapConfig);

imap.once('ready', () => {
  imap.openBox('INBOX', true, (err, box) => {
    if (err) throw err;

    imap.search(['UNSEEN'], (err, results) => {
      if (err) throw err;
      const f = imap.fetch(results, { bodies: '' });

      f.on('message', msg => {
        msg.on('body', stream => {
          simpleParser(stream, (err, parsed) => {
            if (err) throw err;
            console.log('Subject:', parsed.subject);
            console.log('From:', parsed.from.text);
            console.log('Body:', parsed.text);
          });
        });
      });

      f.once('end', () => {
        console.log('Done fetching all messages!');
        imap.end();
      });
    });
  });
});

imap.once('error', err => {
  console.log(err);
});

imap.once('end', () => {
  console.log('Connection ended');
});

imap.connect();

Parsing Email Content

Using the simpleParser function from mailparser, the script above processes the raw email data. The parsed object contains key elements like the subject, sender, and body of the email. Customize the console.log statements to handle the parsed data as per your requirements.

Managing Attachments

To handle attachments, inspect the parsed object for the attachments array. Here’s how you can manage and save attachments:

const fs = require('fs');
const path = require('path');

// Inside simpleParser callback
if (parsed.attachments.length > 0) {
  parsed.attachments.forEach(attachment => {
    const filePath = path.join(__dirname, attachment.filename);
    fs.writeFileSync(filePath, attachment.content);
    console.log(`Saved attachment: ${attachment.filename}`);
  });
}

Automating Email Parsing

For continuous monitoring, consider running your script periodically or setting up a webhook to trigger email parsing whenever a new email arrives.

Alternative: Email Parser for Google Workspace

For a simpler approach, especially if you’re already using Google Workspace, the Email Parser for Google Workspace offers an intuitive and efficient solution. This tool streamlines email extraction without requiring extensive coding or server management.


Export Your Emails to Sheets

Stop copying and pasting!

Index