UNPKG

@email-service/email-service

Version:

email-service is a versatile npm package designed to simplify the integration and standardization of email communications across multiple Email Service Providers (ESPs).

39 lines (38 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.injectUnsubscribeHeader = injectUnsubscribeHeader; /** * Injecte les headers RFC 8058 de désinscription dans un EmailPayload. * * Pose : * - `List-Unsubscribe: <https://...>` (et éventuellement `<mailto:...>`) * - `List-Unsubscribe-Post: List-Unsubscribe=One-Click` * * Helper pur et immutable : retourne un nouveau payload sans muter l'entrée. * Si des headers `List-Unsubscribe*` existaient déjà dans le payload, ils * sont remplacés. * * Usage typique : envoi marketing unitaire (sendMail), pour lequel on veut * le comportement compliance sans passer par sendBulk. Pour les campagnes * sendBulk, l'injection est automatique dès que `stream: 'marketing'`. * * @param payload L'EmailPayload source (non muté). * @param url L'URL de désinscription du destinataire. * @param mailto Adresse mailto optionnelle (ex: unsubscribe@mon-domaine.com) * — si fournie, ajoutée en premier dans `List-Unsubscribe`. */ function injectUnsubscribeHeader(payload, url, mailto) { const existingHeaders = payload.headers ?? []; // Retire tout header de désinscription pré-existant (override). const filtered = existingHeaders.filter((h) => h.name !== 'List-Unsubscribe' && h.name !== 'List-Unsubscribe-Post'); const listUnsubValue = mailto ? `<mailto:${mailto}>, <${url}>` : `<${url}>`; const nextHeaders = [ ...filtered, { name: 'List-Unsubscribe', value: listUnsubValue }, { name: 'List-Unsubscribe-Post', value: 'List-Unsubscribe=One-Click' }, ]; return { ...payload, headers: nextHeaders }; }