hospitaria-graph-mailer
v1.0.2
Published
Cliente reutilizable para envio de correo mediante Microsoft Graph.
Maintainers
Readme
hospitaria-graph-mailer
Cliente reutilizable para enviar correos por Microsoft Graph desde Node.js.
Instalacion
npm install hospitaria-graph-mailerRequisitos
- Node.js 18 o superior
- Una app de Azure AD con permisos para enviar correo por Microsoft Graph
Variables de entorno sugeridas:
TENANT=tu-tenant-id
MICROSOFT_CLIENT_ID_SEND_EMAIL=tu-client-id
MICROSOFT_SECRET_ID_SEND_EMAIL=tu-client-secret
[email protected]Uso basico
const { createMailerFromEnv } = require("hospitaria-graph-mailer");
const mailer = createMailerFromEnv();
await mailer.send({
from: "[email protected]",
to: ["[email protected]"],
cc: ["[email protected]"],
bcc: ["[email protected]"],
subject: "Orden de compra",
html: "<h1>Hola</h1><p>Adjunto encontraras el pdf.</p>",
attachments: [
{
filename: "orden_123.pdf",
content: pdfBuffer,
contentType: "application/pdf",
},
],
saveToSentItems: true,
});Uso manual
const { GraphMailer } = require("hospitaria-graph-mailer");
const mailer = new GraphMailer({
tenantId: process.env.TENANT,
clientId: process.env.MICROSOFT_CLIENT_ID_SEND_EMAIL,
clientSecret: process.env.MICROSOFT_SECRET_ID_SEND_EMAIL,
defaultFrom: process.env.GRAPH_MAILER_DEFAULT_FROM,
});API
new GraphMailer(options)
Opciones:
tenantId: tenant de Azure ADclientId: client id de la appclientSecret: client secret de la appdefaultFrom: correo remitente por default
createMailerFromEnv(options)
Crea una instancia de GraphMailer leyendo credenciales desde variables de entorno.
Campos soportados:
env: objeto origen de variables de entorno,process.envpor defaulttenantIdKey: nombre de la variable para el tenant,TENANTpor defaultclientIdKey: nombre de la variable para el client id,MICROSOFT_CLIENT_ID_SEND_EMAILpor defaultclientSecretKey: nombre de la variable para el client secret,MICROSOFT_SECRET_ID_SEND_EMAILpor defaultdefaultFromKey: nombre de la variable paradefaultFrom,GRAPH_MAILER_DEFAULT_FROMpor defaultdefaultFrom: fallback manual si no existedefaultFromKey
Ejemplo:
const { createMailerFromEnv } = require("hospitaria-graph-mailer");
const mailer = createMailerFromEnv({
env: process.env, // opcional
tenantIdKey: "TENANT", // opcional
clientIdKey: "MICROSOFT_CLIENT_ID_SEND_EMAIL", // opcional
clientSecretKey: "MICROSOFT_SECRET_ID_SEND_EMAIL", // opcional
defaultFromKey: "GRAPH_MAILER_DEFAULT_FROM", // opcional
defaultFrom: "[email protected]", // opcional
});mailer.send(message)
Campos soportados:
from: remitente para este envioto: arreglo de correos destinocc: arreglo de correos copiabcc: arreglo de correos copia ocultasubject: asuntohtml: cuerpo HTMLattachments: arreglo de adjuntossaveToSentItems:truepor default
Adjuntos:
{
filename: "archivo.pdf",
content: bufferODatoString,
contentType: "application/pdf",
encoding: "utf8" // opcional; usa "base64" si content ya viene codificado
}Helper HTML
const {
buildEmailLayout,
buildHtmlTable,
} = require("hospitaria-graph-mailer");
const table = buildHtmlTable(
[
{ Cuenta: 1001, Paciente: "Juan Perez" },
{ Cuenta: 1002, Paciente: "Maria Lopez" },
],
{ title: "Cargos aplicados" }
);
const html = buildEmailLayout(table, {
title: "Reporte de cargos",
subtitle: "Resumen del corte del dia",
logoUrl: "https://midominio.com/logo-hospitaria.png",
logoAlt: "Hospitaria",
footer: "Este correo fue generado automaticamente por Hospitaria.",
preheader: "Tu reporte diario ya esta listo",
});Tambien puedes usarlo sin content si solo quieres un encabezado visual:
const { buildEmailLayout } = require("hospitaria-graph-mailer");
const html = buildEmailLayout(undefined, {
title: "Proceso finalizado",
subtitle: "La carga termino correctamente",
logoUrl: "https://midominio.com/logo-hospitaria.png",
footer: "Mensaje generado automaticamente.",
});buildEmailLayout(content, options)
Construye un documento HTML base para correo y permite insertar contenido ya renderizado.
Campos soportados:
content: HTML principal del correo, opcionaltitle: titulo principalsubtitle: texto secundario bajo el titulologoUrl: URL publica del logo a mostrar arriba del encabezadologoAlt: texto alternativo del logo,Logopor defaultlogoWidth: ancho del logo en pixeles como string,160por defaultfooter: texto de cierrepreheader: texto oculto para clientes de correolang: atributolangdel documento,espor defaultmaxWidth: ancho maximo del contenedor,640pxpor defaultaccentColor: color de acento del encabezadobackgroundColor: color de fondo exteriorcardColor: color del contenedor principalbodyColor: color base del texto
