UNPKG

mandrill-nodemailer-transport

Version:

Mandrill API and Nodemailer v4+. The plugin is very small, optimized and written in TypeScript

90 lines (89 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mandrill = void 0; const TRANSFORM_FIELDS = { replyTo: 'Reply-To' }; const TO_KEYS = ['to', 'cc', 'bcc']; const HEADERS = ['replyTo']; var Mandrill; (function (Mandrill) { const getFromName = (data) => { if (data.from) { return data.from.name || ''; } return ''; }; const getFromAddress = (data) => { if (data.from) { return data.from.address || ''; } return ''; }; const appendHeaders = (data) => { return HEADERS.reduce((headers, key) => { if (data[key]) { headers[TRANSFORM_FIELDS[key] || key] = data[key]; } return headers; }, {}); }; const appendAddresses = (data) => { return TO_KEYS.reduce((accumulator, target) => { if (!data[target]) return accumulator; data[target].forEach(to => { accumulator.push({ email: to.address, name: to.name, type: target }); }); return accumulator; }, []); }; const appendAttachments = (data) => { if (!Array.isArray(data.attachments)) return []; return data.attachments.reduce((accumulator, attachment) => { if (!attachment.contentType.startsWith('image/')) { accumulator.push({ name: attachment.filename || attachment.cid, type: attachment.contentType, content: attachment.content }); } return accumulator; }, []); }; const appendImages = (data) => { if (!Array.isArray(data.attachments)) return []; return data.attachments.reduce((accumulator, attachment) => { if (attachment.contentType.startsWith('image/')) { accumulator.push({ name: attachment.cid, type: attachment.contentType, content: attachment.content }); } return accumulator; }, []); }; Mandrill.buildData = (data, key) => { return { key, message: { html: data.html, text: data.text, subject: data.subject, from_email: getFromAddress(data), from_name: getFromName(data), to: appendAddresses(data), headers: appendHeaders(data), attachments: appendAttachments(data), images: appendImages(data) } }; }; })(Mandrill = exports.Mandrill || (exports.Mandrill = {}));