UNPKG

gmail-getter

Version:

A simple tool that gets emails from the Gmail API

69 lines (68 loc) 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseHtmlFromEmail = void 0; /** * Parse HTML from email * @param {Email} email Email content * @returns {string} HTML content * @example const html = parseHtmlFromEmail(email) */ const parseHtmlFromEmail = (email) => { if (!email) { throw new Error('Failed to parse HTML from email - the email object is null or undefined.'); } let mimeType; try { mimeType = email.payload.mimeType; } catch { throw new Error(`Failed to parse HTML from email - the email mime type is not set. \n${JSON.stringify(email)}`); } if (!mimeType) { throw new Error('Failed to parse HTML from email - the email mime type is not set.'); } if (!mimeType.includes('multipart')) { let data; try { data = email.payload.body.data; if (typeof data !== 'string') { throw new Error(); } } catch { throw new Error(`Failed to parse HTML from email - the email data is invalid. \n${JSON.stringify(email)}`); } return Buffer.from(data, 'base64').toString('ascii'); } let parts; try { parts = email.payload.parts; if (!Array.isArray(parts)) { throw new Error(); } } catch { throw new Error(`Failed to parse HTML from email - the email parts are invalid. \n${JSON.stringify(email.payload.parts)}`); } const part = parts.find(part => part.mimeType === 'text/html'); if (!part) { throw new Error(`Failed to parse HTML from email - couldn't find HTML body part in the email. \n${JSON.stringify(parts)}`); } let data; try { data = part.body.data; if (typeof data !== 'string') { throw new Error(); } } catch { throw new Error(`Failed to parse HTML from email - the email data is invalid. \n${JSON.stringify(part)}`); } return Buffer.from(part.body.data, 'base64').toString('ascii'); }; exports.parseHtmlFromEmail = parseHtmlFromEmail;