Files
yourwillyourwish/lib/email.ts
2026-02-06 21:44:04 -06:00

40 lines
965 B
TypeScript

import nodemailer from "nodemailer";
import { loadSystemConfig } from "./system-config";
export type EmailAttachment = {
filename: string;
content: string;
contentType?: string;
};
export async function sendEmail(opts: {
to: string;
subject: string;
html: string;
attachments?: EmailAttachment[];
}) {
const cfg = await loadSystemConfig();
if (!cfg.email?.enabled || !cfg.email?.smtp?.host || !cfg.email?.smtp?.port || !cfg.email?.from) {
return { ok: false, message: "Email not configured" };
}
const transporter = nodemailer.createTransport({
host: cfg.email.smtp.host,
port: cfg.email.smtp.port,
secure: false,
auth: cfg.email.smtp.user
? { user: cfg.email.smtp.user, pass: cfg.email.smtp.pass }
: undefined,
});
await transporter.sendMail({
from: cfg.email.from,
to: opts.to,
subject: opts.subject,
html: opts.html,
attachments: opts.attachments,
});
return { ok: true };
}