@toobstudio/send-email
Version:
Secure SDK for sending emails using the TOOB Mail API
49 lines (48 loc) • 1.67 kB
JavaScript
;
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();
}