UNPKG

eml-analyzer

Version:

A tool to analyse the HTML version of an email message in `.eml` files.

281 lines (251 loc) 4.79 kB
# eml-analyzer A tool to analyse the HTML version of an email message in `.eml` files. ## Install ``` npm i eml-analyzer ``` ## Usage ```js import * as fs from "fs"; import emlAnalyzer from "eml-analyzer"; let analyzer = new emlAnalyzer("path/to/file.eml"); analyzer.run().then(() => { let result = analyzer.result; // print result to console console.log(result); // or save as JSON fs.writeFileSync(`results.json`, JSON.stringify(result, null, 2)); }); ``` ## Options | Option | Type | Default | Description | | ----------------------- | ------- | ------- | ----------------------------------------------- | | fetchExternalAssetsSize | Boolean | false | Whether to get the file size of external assets | ```js let analyzer = new emlAnalyzer("path/to/file.eml", { fetchExternalAssetsSize: false, }); ``` ## Results The returned results include: - Size (in bytes) - of the .eml file - of each MIME type - MIME Types - Subject line - Character count - Word count - Used emojis - Sender - The TLD of sender domain - Subdomain - Whether the email has attachements - Language of email message - HTML - Tags - Tag attributes - MSO conditional comments - URL protocols used in links - Structured data - Whether structured data is used (e.g. Gmail annotations) - Whether Microsoft Actionable Messages are used - CSS - Whether invalid CSS is detected - CSS properties - CSS values - CSS selectors - CSS rules - CSS at-rules - External assets - Image count - File formats - Optional: file sizes of external assets (in bytes) ```json { "size": { "eml": 111062, "text": 4059, "html": 96074, "amp": 0 }, "mimeTypes": { "text": true, "html": true, "amp": false }, "subject": { "chars": 25, "words": 4, "emojis": [ "❤️‍🔥" ] }, "sender": { "tld": "com", "subdomain": "", "government": false, "education": false }, "hasAttachments": false, "language": { "code": "arb", "name": "Standard Arabic" }, "html": { "urlProtocols": [ "https:" ], "tags": { "meta": { "count": 5 }, "title": { "count": 1 }, "style": { "count": 1 }, "center": { "count": 1 }, "table": { "count": 5 }, "tbody": { "count": 5 }, "tr": { "count": 19 }, "td": { "count": 22 }, "div": { "count": 22 }, . . . }, "attributes": [ "charset", "http-equiv", "content", "name", "type", "align", "border", "cellpadding", "cellspacing", "height", "width", "id", "style", . . . ], "conditionalComments": [ "[if gte mso 9]" ], "hasStructuredData": false, "hasMicrosoftActionableMessage": false }, "css": { "hasInvalid": false, "properties": [ "direction", "border-collapse", "mso-table-lspace", "mso-table-rspace", "-ms-text-size-adjust", "-webkit-text-size-adjust", "height", "margin", "padding", "width", . . . ], "values": [ "rtl", "collapse", "0", "100%", "exactly", "9px", "separate", "0.5px solid #6E6E6E", "10px", "#FFF", "600px", "none no-repeat center/cover", . . . ], "selectors": [ ":root", "img", "html", "body", ".gray-box", ".upper-footer", ".lower-footer", "body,#mainBody", "p,li,.main-content h5", . . . ], "rules": [ { "property": "direction", "value": "rtl" }, { "property": "border-collapse", "value": "collapse" }, { "property": "mso-table-lspace", "value": "0" }, { "property": "height", "value": "100%" }, . . . ], "atRules": [ { "name": "font-face", "params": "" }, { "name": "media", "params": "(prefers-color-scheme: dark)" }, { "name": "media", "params": "only screen and (max-width: 480px)" } ] }, "externalAssets": { "imageCount": 15, "formats": [ ".png", ".jpeg" ], "sizes": [] } } ``` ## License MIT Licensed, see License.md ## Credit Parts of the code has been adopted form other EMC projects and were written by other developers not listed in this repository as contributors.