UNPKG

@toobstudio/send-email

Version:

Secure SDK for sending emails using the TOOB Mail API

49 lines (48 loc) 1.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendEmail = sendEmail; const crypto_1 = __importDefault(require("crypto")); async function sendEmail(params) { const api_key = process.env.MAIL_TOOB_API_KEY; const secret_key = process.env.MAIL_TOOB_SECRET_KEY; if (!api_key || !secret_key) { throw new Error("MAIL_TOOB_API_KEY and MAIL_TOOB_SECRET_KEY must be defined in environment variables."); } const payload = { api_key, subject: params.subject, message: params.message, plain_text: params.plain_text || removeHtml(params.message), }; if (Array.isArray(params.to) && params.to.length > 0) { payload.toAdress = params.to; } const body = JSON.stringify(payload); const signature = crypto_1.default .createHmac("sha256", secret_key) .update(body) .digest("hex"); const response = await fetch("https://api.mail.toob.com.br/api/v1/send", { method: "POST", headers: { "Content-Type": "application/json", "X-Signature": signature, }, body, }); if (!response.ok) { let errMsg = "Failed to send email."; try { const json = (await response.json()); errMsg = (json === null || json === void 0 ? void 0 : json.error) || errMsg; } catch (_) { } throw new Error(errMsg); } } function removeHtml(html) { return html.replace(/<[^>]+>/g, "").trim(); }