feat(mail): add smtp email delivery

This commit is contained in:
Schubert Ferenc 2026-07-04 00:06:20 +02:00
parent faddaa91d0
commit 3456b04ed4
25 changed files with 529 additions and 60 deletions

View file

@ -1,7 +1,7 @@
import { mkdir, readFile, writeFile } from "fs/promises";
import path from "path";
import { dataDirectory } from "@/lib/runtime/config";
import type { ContactInquiry, InquiryStatus, RepairInquiry, SiteSettings, SmtpSettings } from "./types";
import { configDirectory, dataDirectory } from "@/lib/runtime/config";
import type { ContactInquiry, InquiryStatus, RepairInquiry, SiteSettings } from "./types";
async function ensureDataDir() {
await mkdir(dataDirectory, { recursive: true });
@ -112,26 +112,8 @@ export async function saveSiteSettings(form: FormData) {
return settings;
}
export async function getSmtpSettings() {
return readJson<SmtpSettings>("smtp-settings.json", {
host: "",
port: "587",
username: "",
fromAddress: "",
replyToAddress: "",
tls: true,
});
export async function ensureConfigDir() {
await mkdir(configDirectory, { recursive: true });
}
export async function saveSmtpSettings(form: FormData) {
const settings: SmtpSettings = {
host: text(form.get("host")),
port: text(form.get("port")),
username: text(form.get("username")),
fromAddress: text(form.get("fromAddress")),
replyToAddress: text(form.get("replyToAddress")),
tls: form.get("tls") === "on",
};
await writeJson("smtp-settings.json", settings);
return settings;
}
export { text };

View file

@ -42,7 +42,15 @@ export type SmtpSettings = {
host: string;
port: string;
username: string;
password?: string;
security: "starttls" | "tls" | "none";
fromAddress: string;
replyToAddress: string;
tls: boolean;
recipientAddress: string;
bccAddress?: string;
lastTestAt?: string;
lastTestStatus?: "success" | "error";
lastDeliveryAt?: string;
lastDeliveryStatus?: "success" | "error";
lastError?: string;
};