mandrill-inbound-parser

1.0.7 • Public • Published

mandrill-inbound-parser

A simple NPM parser for inbound urlencoded mandrill messages.

Basic Usage

const mip = require('mandrill-inbound-parser');
const inboundMsg = mip.parse(mandrill_encoded_string);

console.log(inboundMsg);

Basic Usage w/ Included Sample File

const fs = require('fs');
const mip = require('mandrill-inbound-parser');

//on windows, change slashes if on mac/linux
fs.readFile('node_modules/mandrill-inbound-parser/sample_inbound_encoded_string.txt', function (err, inboundMsg) {
  if (err) throw err;
  console.log(mip.parse(inboundMsg));
});

Sample Output After Parse

[
   {
      "event":"inbound",
      "msg":{
         "dkim":{
            "signed":true,
            "valid":true
         },
         "email":"webhook@inquiry.adoptapet.com",
         "from_email":"example.sender@mandrillapp.com",
         "headers":{
            "Content-Type":"multipart\/alternative; boundary=\"_av-7r7zDhHxVEAo2yMWasfuFw\"",
            "Date":"Fri, 10 May 2013 19:28:20 +0000",
            "Dkim-Signature":[
               "v=1; a=rsa-sha1; c=relaxed\/relaxed; s=mandrill; d=mail115.us4.mandrillapp.com; h=From:Sender:Subject:List-Unsubscribe:To:Message-Id:Date:MIME-Version:Content-Type; i=example.sender@mail115.us4.mandrillapp.com; bh=d60x72jf42gLILD7IiqBL0OBb40=; b=iJd7eBugdIjzqW84UZ2xynlg1SojANJR6xfz0JDD44h78EpbqJiYVcMIfRG7mkrn741Bd5YaMR6p 9j41OA9A5am+8BE1Ng2kLRGwou5hRInn+xXBAQm2NUt5FkoXSpvm4gC4gQSOxPbQcuzlLha9JqxJ 8ZZ89\/20txUrRq9cYxk=",
               "v=1; a=rsa-sha256; c=relaxed\/relaxed; d=c.mandrillapp.com; i=@c.mandrillapp.com; q=dns\/txt; s=mandrill; t=1368214100; h=From : Sender : Subject : List-Unsubscribe : To : Message-Id : Date : MIME-Version : Content-Type : From : Subject : Date : X-Mandrill-User : List-Unsubscribe; bh=y5Vz+RDcKZmWzRc9s0xUJR6k4APvBNktBqy1EhSWM8o=; b=PLAUIuw8zk8kG5tPkmcnSanElxt6I5lp5t32nSvzVQE7R8u0AmIEjeIDZEt31+Q9PWt+nY sHHRsXUQ9SZpndT9Bk++\/SmyA2ntU\/2AKuqDpPkMZiTqxmGF80Wz4JJgx2aCEB1LeLVmFFwB 5Nr\/LBSlsBlRcjT9QiWw0\/iRvCn74="
            ],
            "Domainkey-Signature":"a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=mail115.us4.mandrillapp.com; b=X6qudHd4oOJvVQZcoAEUCJgB875SwzEO5UKf6NvpfqyCVjdaO79WdDulLlfNVELeuoK2m6alt2yw 5Qhp4TW5NegyFf6Ogr\/Hy0Lt411r\/0lRf0nyaVkqMM\/9g13B6D9CS092v70wshX8+qdyxK8fADw8 kEelbCK2cEl0AGIeAeo=;",
            "From":"<example.sender@mandrillapp.com>",
            "List-Unsubscribe":"<mailto:unsubscribe-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailin1.us2.mcsv.net?subject=unsub>",
            "Message-Id":"<999.20130510192820.aaaaaaaaaaaaaa.aaaaaaaa@mail115.us4.mandrillapp.com>",
            "Mime-Version":"1.0",
            "Received":[
               "from mail115.us4.mandrillapp.com (mail115.us4.mandrillapp.com [205.201.136.115]) by mail.example.com (Postfix) with ESMTP id AAAAAAAAAAA for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:21 +0000 (UTC)",
               "from localhost (127.0.0.1) by mail115.us4.mandrillapp.com id hhl55a14i282 for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (envelope-from <bounce-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mail115.us4.mandrillapp.com>)"
            ],
            "Sender":"<example.sender@mail115.us4.mandrillapp.com>",
            "Subject":"This is an example webhook message",
            "To":"<webhook@inquiry.adoptapet.com>",
            "X-Report-Abuse":"Please forward a copy of this message, including all headers, to abuse@mandrill.com"
         },
         "html":"<p>This is an example inbound message.<\/p><img src=\"http:\/\/mandrillapp.com\/track\/open.php?u=999&id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&tags=_all,_sendexample.sender@mandrillapp.com\" height=\"1\" width=\"1\">\n",
         "raw_msg":"Received: from mail115.us4.mandrillapp.com (mail115.us4.mandrillapp.com [205.201.136.115])\n\tby mail.example.com (Postfix) with ESMTP id AAAAAAAAAAA\n\tfor <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (UTC)\nDKIM-Signature: v=1; a=rsa-sha1; c=relaxed\/relaxed; s=mandrill; d=mail115.us4.mandrillapp.com;\n h=From:Sender:Subject:List-Unsubscribe:To:Message-Id:Date:MIME-Version:Content-Type; i=example.sender@mail115.us4.mandrillapp.com;\n bh=d60x72jf42gLILD7IiqBL0OBb40=;\n b=iJd7eBugdIjzqW84UZ2xynlg1SojANJR6xfz0JDD44h78EpbqJiYVcMIfRG7mkrn741Bd5YaMR6p\n 9j41OA9A5am+8BE1Ng2kLRGwou5hRInn+xXBAQm2NUt5FkoXSpvm4gC4gQSOxPbQcuzlLha9JqxJ\n 8ZZ89\/20txUrRq9cYxk=\nDomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=mail115.us4.mandrillapp.com;\n b=X6qudHd4oOJvVQZcoAEUCJgB875SwzEO5UKf6NvpfqyCVjdaO79WdDulLlfNVELeuoK2m6alt2yw\n 5Qhp4TW5NegyFf6Ogr\/Hy0Lt411r\/0lRf0nyaVkqMM\/9g13B6D9CS092v70wshX8+qdyxK8fADw8\n kEelbCK2cEl0AGIeAeo=;\nReceived: from localhost (127.0.0.1) by mail115.us4.mandrillapp.com id hhl55a14i282 for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (envelope-from <bounce-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mail115.us4.mandrillapp.com>)\nDKIM-Signature: v=1; a=rsa-sha256; c=relaxed\/relaxed; d=c.mandrillapp.com; \n i=@c.mandrillapp.com; q=dns\/txt; s=mandrill; t=1368214100; h=From : \n Sender : Subject : List-Unsubscribe : To : Message-Id : Date : \n MIME-Version : Content-Type : From : Subject : Date : X-Mandrill-User : \n List-Unsubscribe; bh=y5Vz+RDcKZmWzRc9s0xUJR6k4APvBNktBqy1EhSWM8o=; \n b=PLAUIuw8zk8kG5tPkmcnSanElxt6I5lp5t32nSvzVQE7R8u0AmIEjeIDZEt31+Q9PWt+nY\n sHHRsXUQ9SZpndT9Bk++\/SmyA2ntU\/2AKuqDpPkMZiTqxmGF80Wz4JJgx2aCEB1LeLVmFFwB\n 5Nr\/LBSlsBlRcjT9QiWw0\/iRvCn74=\nFrom: <example.sender@mandrillapp.com>\nSender: <example.sender@mail115.us4.mandrillapp.com>\nSubject: This is an example webhook message\nList-Unsubscribe: <mailto:unsubscribe-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailin1.us2.mcsv.net?subject=unsub>\nTo: <webhook@inquiry.adoptapet.com>\nX-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com\nX-Mandrill-User: md_999\nMessage-Id: <999.20130510192820.aaaaaaaaaaaaaa.aaaaaaaa@mail115.us4.mandrillapp.com>\nDate: Fri, 10 May 2013 19:28:20 +0000\nMIME-Version: 1.0\nContent-Type: multipart\/alternative; boundary=\"_av-7r7zDhHxVEAo2yMWasfuFw\"\n\n--_av-7r7zDhHxVEAo2yMWasfuFw\nContent-Type: text\/plain; charset=utf-8\nContent-Transfer-Encoding: 7bit\n\nThis is an example inbound message.\n--_av-7r7zDhHxVEAo2yMWasfuFw\nContent-Type: text\/html; charset=utf-8\nContent-Transfer-Encoding: 7bit\n\n<p>This is an example inbound message.<\/p><img src=\"http:\/\/mandrillapp.com\/track\/open.php?u=999&id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&tags=_all,_sendexample.sender@mandrillapp.com\" height=\"1\" width=\"1\">\n--_av-7r7zDhHxVEAo2yMWasfuFw--",
         "sender":null,
         "spam_report":{
            "matched_rules":[
               {
                  "description":"RBL: Sender listed at http:\/\/www.dnswl.org\/, no",
                  "name":"RCVD_IN_DNSWL_NONE",
                  "score":0
               },
               {
                  "description":null,
                  "name":null,
                  "score":0
               },
               {
                  "description":"in iadb.isipp.com]",
                  "name":"listed",
                  "score":0
               },
               {
                  "description":"RBL: Participates in the IADB system",
                  "name":"RCVD_IN_IADB_LISTED",
                  "score":-0.4
               },
               {
                  "description":"RBL: ISIPP IADB lists as vouched-for sender",
                  "name":"RCVD_IN_IADB_VOUCHED",
                  "score":-2.2
               },
               {
                  "description":"RBL: IADB: Sender publishes SPF record",
                  "name":"RCVD_IN_IADB_SPF",
                  "score":0
               },
               {
                  "description":"RBL: IADB: Sender publishes Sender ID record",
                  "name":"RCVD_IN_IADB_SENDERID",
                  "score":0
               },
               {
                  "description":"RBL: IADB: Sender publishes Domain Keys record",
                  "name":"RCVD_IN_IADB_DK",
                  "score":-0.2
               },
               {
                  "description":"RBL: IADB: Sender has reverse DNS record",
                  "name":"RCVD_IN_IADB_RDNS",
                  "score":-0.2
               },
               {
                  "description":"SPF: HELO matches SPF record",
                  "name":"SPF_HELO_PASS",
                  "score":0
               },
               {
                  "description":"BODY: HTML included in message",
                  "name":"HTML_MESSAGE",
                  "score":0
               },
               {
                  "description":"BODY: HTML: images with 0-400 bytes of words",
                  "name":"HTML_IMAGE_ONLY_04",
                  "score":0.3
               },
               {
                  "description":"Message has a DKIM or DK signature, not necessarily valid",
                  "name":"DKIM_SIGNED",
                  "score":0.1
               },
               {
                  "description":"Message has at least one valid DKIM or DK signature",
                  "name":"DKIM_VALID",
                  "score":-0.1
               }
            ],
            "score":-2.6
         },
         "spf":{
            "detail":"sender SPF authorized",
            "result":"pass"
         },
         "subject":"This is an example webhook message",
         "tags":[

         ],
         "template":null,
         "text":"This is an example inbound message.\n",
         "text_flowed":false,
         "to":[
            [
               "webhook@inquiry.adoptapet.com",
               null
            ]
         ]
      },
      "ts":1368214102
   },
   {
      "event":"inbound",
      "msg":{
         "dkim":{
            "signed":true,
            "valid":true
         },
         "email":"webhook@inquiry.adoptapet.com",
         "from_email":"example.sender@mandrillapp.com",
         "headers":{
            "Content-Type":"multipart\/alternative; boundary=\"_av-7r7zDhHxVEAo2yMWasfuFw\"",
            "Date":"Fri, 10 May 2013 19:28:20 +0000",
            "Dkim-Signature":[
               "v=1; a=rsa-sha1; c=relaxed\/relaxed; s=mandrill; d=mail115.us4.mandrillapp.com; h=From:Sender:Subject:List-Unsubscribe:To:Message-Id:Date:MIME-Version:Content-Type; i=example.sender@mail115.us4.mandrillapp.com; bh=d60x72jf42gLILD7IiqBL0OBb40=; b=iJd7eBugdIjzqW84UZ2xynlg1SojANJR6xfz0JDD44h78EpbqJiYVcMIfRG7mkrn741Bd5YaMR6p 9j41OA9A5am+8BE1Ng2kLRGwou5hRInn+xXBAQm2NUt5FkoXSpvm4gC4gQSOxPbQcuzlLha9JqxJ 8ZZ89\/20txUrRq9cYxk=",
               "v=1; a=rsa-sha256; c=relaxed\/relaxed; d=c.mandrillapp.com; i=@c.mandrillapp.com; q=dns\/txt; s=mandrill; t=1368214100; h=From : Sender : Subject : List-Unsubscribe : To : Message-Id : Date : MIME-Version : Content-Type : From : Subject : Date : X-Mandrill-User : List-Unsubscribe; bh=y5Vz+RDcKZmWzRc9s0xUJR6k4APvBNktBqy1EhSWM8o=; b=PLAUIuw8zk8kG5tPkmcnSanElxt6I5lp5t32nSvzVQE7R8u0AmIEjeIDZEt31+Q9PWt+nY sHHRsXUQ9SZpndT9Bk++\/SmyA2ntU\/2AKuqDpPkMZiTqxmGF80Wz4JJgx2aCEB1LeLVmFFwB 5Nr\/LBSlsBlRcjT9QiWw0\/iRvCn74="
            ],
            "Domainkey-Signature":"a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=mail115.us4.mandrillapp.com; b=X6qudHd4oOJvVQZcoAEUCJgB875SwzEO5UKf6NvpfqyCVjdaO79WdDulLlfNVELeuoK2m6alt2yw 5Qhp4TW5NegyFf6Ogr\/Hy0Lt411r\/0lRf0nyaVkqMM\/9g13B6D9CS092v70wshX8+qdyxK8fADw8 kEelbCK2cEl0AGIeAeo=;",
            "From":"<example.sender@mandrillapp.com>",
            "List-Unsubscribe":"<mailto:unsubscribe-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailin1.us2.mcsv.net?subject=unsub>",
            "Message-Id":"<999.20130510192820.aaaaaaaaaaaaaa.aaaaaaaa@mail115.us4.mandrillapp.com>",
            "Mime-Version":"1.0",
            "Received":[
               "from mail115.us4.mandrillapp.com (mail115.us4.mandrillapp.com [205.201.136.115]) by mail.example.com (Postfix) with ESMTP id AAAAAAAAAAA for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:21 +0000 (UTC)",
               "from localhost (127.0.0.1) by mail115.us4.mandrillapp.com id hhl55a14i282 for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (envelope-from <bounce-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mail115.us4.mandrillapp.com>)"
            ],
            "Sender":"<example.sender@mail115.us4.mandrillapp.com>",
            "Subject":"This is an example webhook message",
            "To":"<webhook@inquiry.adoptapet.com>",
            "X-Report-Abuse":"Please forward a copy of this message, including all headers, to abuse@mandrill.com"
         },
         "html":"<p>This is an example inbound message.<\/p><img src=\"http:\/\/mandrillapp.com\/track\/open.php?u=999&id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&tags=_all,_sendexample.sender@mandrillapp.com\" height=\"1\" width=\"1\">\n",
         "raw_msg":"Received: from mail115.us4.mandrillapp.com (mail115.us4.mandrillapp.com [205.201.136.115])\n\tby mail.example.com (Postfix) with ESMTP id AAAAAAAAAAA\n\tfor <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (UTC)\nDKIM-Signature: v=1; a=rsa-sha1; c=relaxed\/relaxed; s=mandrill; d=mail115.us4.mandrillapp.com;\n h=From:Sender:Subject:List-Unsubscribe:To:Message-Id:Date:MIME-Version:Content-Type; i=example.sender@mail115.us4.mandrillapp.com;\n bh=d60x72jf42gLILD7IiqBL0OBb40=;\n b=iJd7eBugdIjzqW84UZ2xynlg1SojANJR6xfz0JDD44h78EpbqJiYVcMIfRG7mkrn741Bd5YaMR6p\n 9j41OA9A5am+8BE1Ng2kLRGwou5hRInn+xXBAQm2NUt5FkoXSpvm4gC4gQSOxPbQcuzlLha9JqxJ\n 8ZZ89\/20txUrRq9cYxk=\nDomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=mail115.us4.mandrillapp.com;\n b=X6qudHd4oOJvVQZcoAEUCJgB875SwzEO5UKf6NvpfqyCVjdaO79WdDulLlfNVELeuoK2m6alt2yw\n 5Qhp4TW5NegyFf6Ogr\/Hy0Lt411r\/0lRf0nyaVkqMM\/9g13B6D9CS092v70wshX8+qdyxK8fADw8\n kEelbCK2cEl0AGIeAeo=;\nReceived: from localhost (127.0.0.1) by mail115.us4.mandrillapp.com id hhl55a14i282 for <webhook@inquiry.adoptapet.com>; Fri, 10 May 2013 19:28:20 +0000 (envelope-from <bounce-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mail115.us4.mandrillapp.com>)\nDKIM-Signature: v=1; a=rsa-sha256; c=relaxed\/relaxed; d=c.mandrillapp.com; \n i=@c.mandrillapp.com; q=dns\/txt; s=mandrill; t=1368214100; h=From : \n Sender : Subject : List-Unsubscribe : To : Message-Id : Date : \n MIME-Version : Content-Type : From : Subject : Date : X-Mandrill-User : \n List-Unsubscribe; bh=y5Vz+RDcKZmWzRc9s0xUJR6k4APvBNktBqy1EhSWM8o=; \n b=PLAUIuw8zk8kG5tPkmcnSanElxt6I5lp5t32nSvzVQE7R8u0AmIEjeIDZEt31+Q9PWt+nY\n sHHRsXUQ9SZpndT9Bk++\/SmyA2ntU\/2AKuqDpPkMZiTqxmGF80Wz4JJgx2aCEB1LeLVmFFwB\n 5Nr\/LBSlsBlRcjT9QiWw0\/iRvCn74=\nFrom: <example.sender@mandrillapp.com>\nSender: <example.sender@mail115.us4.mandrillapp.com>\nSubject: This is an example webhook message\nList-Unsubscribe: <mailto:unsubscribe-md_999.aaaaaaaa.v1-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@mailin1.us2.mcsv.net?subject=unsub>\nTo: <webhook@inquiry.adoptapet.com>\nX-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com\nX-Mandrill-User: md_999\nMessage-Id: <999.20130510192820.aaaaaaaaaaaaaa.aaaaaaaa@mail115.us4.mandrillapp.com>\nDate: Fri, 10 May 2013 19:28:20 +0000\nMIME-Version: 1.0\nContent-Type: multipart\/alternative; boundary=\"_av-7r7zDhHxVEAo2yMWasfuFw\"\n\n--_av-7r7zDhHxVEAo2yMWasfuFw\nContent-Type: text\/plain; charset=utf-8\nContent-Transfer-Encoding: 7bit\n\nThis is an example inbound message.\n--_av-7r7zDhHxVEAo2yMWasfuFw\nContent-Type: text\/html; charset=utf-8\nContent-Transfer-Encoding: 7bit\n\n<p>This is an example inbound message.<\/p><img src=\"http:\/\/mandrillapp.com\/track\/open.php?u=999&id=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&tags=_all,_sendexample.sender@mandrillapp.com\" height=\"1\" width=\"1\">\n--_av-7r7zDhHxVEAo2yMWasfuFw--",
         "sender":null,
         "spam_report":{
            "matched_rules":[
               {
                  "description":"RBL: Sender listed at http:\/\/www.dnswl.org\/, no",
                  "name":"RCVD_IN_DNSWL_NONE",
                  "score":0
               },
               {
                  "description":null,
                  "name":null,
                  "score":0
               },
               {
                  "description":"in iadb.isipp.com]",
                  "name":"listed",
                  "score":0
               },
               {
                  "description":"RBL: Participates in the IADB system",
                  "name":"RCVD_IN_IADB_LISTED",
                  "score":-0.4
               },
               {
                  "description":"RBL: ISIPP IADB lists as vouched-for sender",
                  "name":"RCVD_IN_IADB_VOUCHED",
                  "score":-2.2
               },
               {
                  "description":"RBL: IADB: Sender publishes SPF record",
                  "name":"RCVD_IN_IADB_SPF",
                  "score":0
               },
               {
                  "description":"RBL: IADB: Sender publishes Sender ID record",
                  "name":"RCVD_IN_IADB_SENDERID",
                  "score":0
               },
               {
                  "description":"RBL: IADB: Sender publishes Domain Keys record",
                  "name":"RCVD_IN_IADB_DK",
                  "score":-0.2
               },
               {
                  "description":"RBL: IADB: Sender has reverse DNS record",
                  "name":"RCVD_IN_IADB_RDNS",
                  "score":-0.2
               },
               {
                  "description":"SPF: HELO matches SPF record",
                  "name":"SPF_HELO_PASS",
                  "score":0
               },
               {
                  "description":"BODY: HTML included in message",
                  "name":"HTML_MESSAGE",
                  "score":0
               },
               {
                  "description":"BODY: HTML: images with 0-400 bytes of words",
                  "name":"HTML_IMAGE_ONLY_04",
                  "score":0.3
               },
               {
                  "description":"Message has a DKIM or DK signature, not necessarily valid",
                  "name":"DKIM_SIGNED",
                  "score":0.1
               },
               {
                  "description":"Message has at least one valid DKIM or DK signature",
                  "name":"DKIM_VALID",
                  "score":-0.1
               }
            ],
            "score":-2.6
         },
         "spf":{
            "detail":"sender SPF authorized",
            "result":"pass"
         },
         "subject":"This is an example webhook message",
         "tags":[

         ],
         "template":null,
         "text":"This is an example inbound message.\n",
         "text_flowed":false,
         "to":[
            [
               "webhook@inquiry.adoptapet.com",
               null
            ]
         ]
      },
      "ts":1368214102
   }
]

Dependents (0)

Package Sidebar

Install

npm i mandrill-inbound-parser

Weekly Downloads

2

Version

1.0.7

License

ISC

Unpacked Size

40.1 kB

Total Files

4

Last publish

Collaborators

  • spcronin