fosrl.pangolin/server/emails/sendEmail.ts

42 lines
984 B
TypeScript
Raw Normal View History

import { render } from "@react-email/render";
2024-10-03 20:55:54 -04:00
import { ReactElement } from "react";
import emailClient from "@server/emails";
import logger from "@server/logger";
2025-07-13 21:57:24 -07:00
import config from "@server/lib/config";
2024-10-03 20:55:54 -04:00
export async function sendEmail(
template: ReactElement,
opts: {
name?: string;
2024-10-12 18:21:31 -04:00
from: string | undefined;
to: string | undefined;
2024-10-03 20:55:54 -04:00
subject: string;
},
) {
if (!emailClient) {
logger.warn("Email client not configured, skipping email send");
return;
}
2024-10-04 21:16:01 -04:00
if (!opts.from || !opts.to || !opts.subject) {
logger.error("Email missing required fields", opts);
return;
}
2024-10-03 20:55:54 -04:00
const emailHtml = await render(template);
2025-07-17 13:20:27 -07:00
const appName = "Pangolin";
2025-07-13 21:57:24 -07:00
await emailClient.sendMail({
from: {
2025-07-13 21:57:24 -07:00
name: opts.name || appName,
address: opts.from,
},
2024-10-03 20:55:54 -04:00
to: opts.to,
subject: opts.subject,
html: emailHtml,
});
2024-10-03 20:55:54 -04:00
}
export default sendEmail;