Parsing multipart/form-data from SendGrid inbound mail parse

Options
2»

Comments

  • Future
    Future Member
    Options

    Hey Michael, sorry been quite busy lately.

    The codeshare link doesn't work for me (not getting a valid json object). I've quickly checked the json you posted earlier and the "data" string (right after "body: {size: 3895" seems to be a base64 version of your email. This is the value that i'd input in the mailparser lambda :)

  • MichaelR
    MichaelR Member
    Options

    Hey @Future , thanks for that, super appreciated.

    When I get an email from GMAIL, the response looks like the following, how would you incorporate that into your snippet?

    response: {headers: [HTTP/2 200,

    content-type: application/json; charset=UTF-8,

    vary: Origin,

    vary: X-Origin,

    vary: Referer,

    content-encoding: gzip,

    date: Fri, 30 Dec 2022 13:16:19 GMT,

    server: ESF,

    cache-control: private,

    content-length: 21261,

    ... +3 more

    ],

    result: {id: 184151ae8cbebbb5,

    threadId: 184151ae8cbebbb5,

    labelIds: [UNREAD,

    CATEGORY_UPDATES,

    INBOX

    ],

    snippet: Book a free 1:1 consultation with a Google Ads expert. Get started with a free 1:1 consultation - call 1 844 229 2211844 229 2211 † to speak with a Google Ads expert. Here's $500 to grow your,

    payload: {partId: ,

    mimeType: multipart/alternative,

    filename: ,

    headers: [{name: Delivered-To,

    value: michael@junglebee.io

    },

    {name: Received,

    value: by 2002:aa6:d9a1:0:b0:22a:b395:493e with SMTP id bt1csp488244lkb; Wed, 26 Oct 2022 09:23:16 -0700 (PDT)

    },

    {name: X-Received,

    value: by 2002:a9d:30d8:0:b0:66b:3596:9639 with SMTP id r24-20020a9d30d8000000b0066b35969639mr74654otg.363.1666801395996; Wed, 26 Oct 2022 09:23:15 -0700 (PDT)

    },

    {name: ARC-Seal,

    value: i=1; a=rsa-sha256; t=1666801395; cv=none; d=google.com; s=arc-20160816; b=zm/xjojLATowUPXM/gysNdG/vtcnMWOQ/6BgFcZf7+Z//lnUMOyzvLN6tFy6xFjupH p5P7K5lkdJYpaml6caEw87WAGL0B3tQABhNbR4Zpud8BY0n90bL5q5hXAqK8F9GDljGKg5sfT+s7skoQAHi7ZBojBnlgsZVBp/XC5k6YO2autO0Kn4G9fpHyAVfwuYUUjOXEEzb NcQcTnvbGwjbTqynYy/hHwLpKjYS0vIEhILRjgZ+BK/Djdnc8T0PGF3iU0Qe3E+Lq0wz bgzs7QW7ol5jVCU0KT9xfezAd/NojXHFNn6/I7AxAg8kGw0DHyMzcwcLd2LXla3FcAnX 3pyQ==

    },

    {name: ARC-Message-Signature,

    value: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:from:subject:message-id:list-id:feedback-id:list-unsubscribe :precedence:reply-to:date:mime-version:dkim-signature; bh=IKlTzU6IiW4I0qlHIjj/la7++4CkyvvgGgfDQvH3PRc=;

    },

    {name: ARC-Authentication-Results,

    value: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PO261VKX; spf=pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) smtp.mailfrom=3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com

    },

    {name: Return-Path,

    value: <3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com>

    },

    {name: Received,

    value: from mail-sor-f69.google.com (mail-sor-f69.google.com. [209.85.220.69]) by mx.google.com with SMTPS id r63-20020aca4442000000b00357646319fesor1781862oia.126.2022.10.26.09.23.15 for <michael@junglebee.io> (Google Transport Security); Wed, 26 Oct 2022 09:23:15 -0700 (PDT)

    },

    {name: Received-SPF,

    value: pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) client-ip=209.85.220.69;

    },

    {name: Authentication-Results,

    value: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PO261VKX; spf=pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) smtp.mailfrom=3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com

    },

    ... +20 more

    ],

    body: {size: 0

    },

    parts: [{partId: 0,

    mimeType: text/plain,

    filename: ,

    headers: [{name: Content-Type,

    value: text/plain; charset="UTF-8"; format=flowed; delsp=yes

    },

    {name: Content-Transfer-Encoding,

    value: base64

    }

    ],

    body: {size: 3895,

    data: R2V0IHN0YXJ0ZWQgd2l0aCBhIGZyZWUgMToxIGNvbnN1bHRhdGlvbiAtIGNhbGwgMSA4NDQgMjI5IDIyMTHigKAgdG8gc3BlYWsgIA0Kd2l0aCBhIEdvb2dsZSBBZHMgZXhwZXJ0Lg0KDQpIZXJlJ3MgJDUwMCB0byBncm93IHlvdXIgYnVzaW5lc3Mgd2l0aCBHb29nbGUgQWRzDQoNCllvdSdyZSBvZmYgdG8gYSBncmVhdCBzdGFydCB3aXRoIEdvb2dsZSBXb3Jrc3BhY2UuIE5vdyBleHBhbmQgeW91ciByZWFjaCwgIA0KYm9vc3QgeW91ciBzYWxlcywgb3IgYnVpbGQgYXdhcmVuZXNzIHdpdGggR29vZ2xlIEFkcyB0byBnZXQgdGhlIG1vc3QgZnJvbSAgDQp5b3VyIEdvb2dsZSBjbG91ZCBhY2NvdW50LiBFbmpveSAkNTAwIGluIEdvb2dsZSBBZHMgY3JlZGl0IHdoZW4geW91IHNwZW5kICANCiQ1MDAuKiBKdXN0IGFwcGx5IHlvdXIgY29kZSA0QUdIQy1DWFVEQy1MTTZVIHVudGlsIERlY2VtYmVyIDMxLCAyMDIyLg0KDQpSZWRlZW0geW91ciBjcmVkaXQgIA0KPGh0dHBzOi8vbm90aWZpY2F0aW9ucy5nb29nbGUuY29tL2cvcC9BS1dvTFFqTzB3a1IzeXNud3pTOWdtOTA5bks0aTJrNnlZa0l1Rk9Zb0VaNW5ieFJtTXJsUWVUNEtpUmFSVXIyMWtjNGdMa2Y1NnJBY1p3MHU4Z2Ywck0wS1hGVGJQQThWVDViQ0dELVk1c0tG

    }

    },

    {partId: 1,

    mimeType: text/html,

    filename: ,

    headers: [{name: Content-Type,

    value: text/html; charset="UTF-8"

    },

    {name: Content-Transfer-Encoding,

    value: quoted-printable

    }

    ],

    body: {size: 44979,

    data: PCFkb2N0eXBlIGh0bWwgcHVibGljICItIC8gL3czYyAvIC9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbCAvIC9lbiIgImh0dHA6IC8gL3d3dy53My5vcmcgL3RyIC94aHRtbDEgL2R0ZCAveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCB4bWxuczp2PXVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IiBsYW5nPWVuPg0KPHRpdGxlPlJlYWNoIG5ldyBjdXN0b21lcnM8L3RpdGxlPg0KPGhlYWQ-DQo8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg

  • MichaelR
    MichaelR Member
    Options

    Hey @Future , thanks for that, super appreciated.

    When I get an email from GMAIL, the response looks like the following, how would you incorporate that into your snippet?

    response: {headers: [HTTP/2 200,

    content-type: application/json; charset=UTF-8,

    vary: Origin,

    vary: X-Origin,

    vary: Referer,

    content-encoding: gzip,

    date: Fri, 30 Dec 2022 13:16:19 GMT,

    server: ESF,

    cache-control: private,

    content-length: 21261,

    ... +3 more

    ],

    result: {id: 184151ae8cbebbb5,

    threadId: 184151ae8cbebbb5,

    labelIds: [UNREAD,

    CATEGORY_UPDATES,

    INBOX

    ],

    snippet: Book a free 1:1 consultation with a Google Ads expert. Get started with a free 1:1 consultation - call 1 844 229 2211844 229 2211 † to speak with a Google Ads expert. Here&#39;s $500 to grow your,

    payload: {partId: ,

    mimeType: multipart/alternative,

    filename: ,

    headers: [{name: Delivered-To,

    value: michael@junglebee.io

    },

    {name: Received,

    value: by 2002:aa6:d9a1:0:b0:22a:b395:493e with SMTP id bt1csp488244lkb; Wed, 26 Oct 2022 09:23:16 -0700 (PDT)

    },

    {name: X-Received,

    value: by 2002:a9d:30d8:0:b0:66b:3596:9639 with SMTP id r24-20020a9d30d8000000b0066b35969639mr74654otg.363.1666801395996; Wed, 26 Oct 2022 09:23:15 -0700 (PDT)

    },

    {name: ARC-Seal,

    value: i=1; a=rsa-sha256; t=1666801395; cv=none; d=google.com; s=arc-20160816; b=zm/xjojLATowUPXM/gysNdG/vtcnMWOQ/6BgFcZf7+Z//lnUMOyzvLN6tFy6xFjupH p5P7K5lkdJYpaml6caEw87WAGL0B3tQABhNbR4Zpud8BY0n90bL5q5hXAqK8F9GDljGKg5sfT+s7skoQAHi7ZBojBnlgsZVBp/XC5k6YO2autO0Kn4G9fpHyAVfwuYUUjOXEEzb NcQcTnvbGwjbTqynYy/hHwLpKjYS0vIEhILRjgZ+BK/Djdnc8T0PGF3iU0Qe3E+Lq0wz bgzs7QW7ol5jVCU0KT9xfezAd/NojXHFNn6/I7AxAg8kGw0DHyMzcwcLd2LXla3FcAnX 3pyQ==

    },

    {name: ARC-Message-Signature,

    value: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:from:subject:message-id:list-id:feedback-id:list-unsubscribe :precedence:reply-to:date:mime-version:dkim-signature; bh=IKlTzU6IiW4I0qlHIjj/la7++4CkyvvgGgfDQvH3PRc=;

    },

    {name: ARC-Authentication-Results,

    value: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PO261VKX; spf=pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) smtp.mailfrom=3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com

    },

    {name: Return-Path,

    value: <3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com>

    },

    {name: Received,

    value: from mail-sor-f69.google.com (mail-sor-f69.google.com. [209.85.220.69]) by mx.google.com with SMTPS id r63-20020aca4442000000b00357646319fesor1781862oia.126.2022.10.26.09.23.15 for <michael@junglebee.io> (Google Transport Security); Wed, 26 Oct 2022 09:23:15 -0700 (PDT)

    },

    {name: Received-SPF,

    value: pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) client-ip=209.85.220.69;

    },

    {name: Authentication-Results,

    value: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=PO261VKX; spf=pass (google.com: domain of 3815zyxekbzgqilemjuwy-hilyjfsaiiafy.wiggcwbuyfdohafyvyy.ci@scoutcamp.bounces.google.com designates 209.85.220.69 as permitted sender) smtp.mailfrom=3815ZYxEKBzgqilemjUWY-hilYjfsaiiafY.WiggcWbUYfdohafYVYY.ci@scoutcamp.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com

    },

    ... +20 more

    ],

    body: {size: 0

    },

    parts: [{partId: 0,

    mimeType: text/plain,

    filename: ,

    headers: [{name: Content-Type,

    value: text/plain; charset="UTF-8"; format=flowed; delsp=yes

    },

    {name: Content-Transfer-Encoding,

    value: base64

    }

    ],

    body: {size: 3895,

    data: R2V0IHN0YXJ0ZWQgd2l0aCBhIGZyZWUgMToxIGNvbnN1bHRhdGlvbiAtIGNhbGwgMSA4NDQgMjI5IDIyMTHigKAgdG8gc3BlYWsgIA0Kd2l0aCBhIEdvb2dsZSBBZHMgZXhwZXJ0Lg0KDQpIZXJlJ3MgJDUwMCB0byBncm93IHlvdXIgYnVzaW5lc3Mgd2l0aCBHb29nbGUgQWRzDQoNCllvdSdyZSBvZmYgdG8gYSBncmVhdCBzdGFydCB3aXRoIEdvb2dsZSBXb3Jrc3BhY2UuIE5vdyBleHBhbmQgeW91ciByZWFjaCwgIA0KYm9vc3QgeW91ciBzYWxlcywgb3IgYnVpbGQgYXdhcmVuZXNzIHdpdGggR29vZ2xlIEFkcyB0byBnZXQgdGhlIG1vc3QgZnJvbSAgDQp5b3VyIEdvb2dsZSBjbG91ZCBhY2NvdW50LiBFbmpveSAkNTAwIGluIEdvb2dsZSBBZHMgY3JlZGl0IHdoZW4geW91IHNwZW5kICANCiQ1MDAuKiBKdXN0IGFwcGx5IHlvdXIgY29kZSA0QUdIQy1DWFVEQy1MTTZVIHVudGlsIERlY2VtYmVyIDMxLCAyMDIyLg0KDQpSZWRlZW0geW91ciBjcmVkaXQgIA0KPGh0dHBzOi8vbm90aWZpY2F0aW9ucy5nb29nbGUuY29tL2cvcC9BS1dvTFFqTzB3a1IzeXNud3pTOWdtOTA5bks0aTJrNnlZa0l1Rk9Zb0VaNW5ieFJtTXJsUWVUNEtpUmFSVXIyMWtjNGdMa2Y1NnJBY1p3MHU4Z2Ywck0wS1hGVGJQQThWVDViQ0dELVk1c0tG

    }

    },

    {partId: 1,

    mimeType: text/html,

    filename: ,

    headers: [{name: Content-Type,

    value: text/html; charset="UTF-8"

    },

    {name: Content-Transfer-Encoding,

    value: quoted-printable

    }

    ],

    body: {size: 44979,

    data: PCFkb2N0eXBlIGh0bWwgcHVibGljICItIC8gL3czYyAvIC9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbCAvIC9lbiIgImh0dHA6IC8gL3d3dy53My5vcmcgL3RyIC94aHRtbDEgL2R0ZCAveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCB4bWxuczp2PXVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IiBsYW5nPWVuPg0KPHRpdGxlPlJlYWNoIG5ldyBjdXN0b21lcnM8L3RpdGxlPg0KPGhlYWQ-DQo8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg