diff --git a/website/astro.config.mjs b/website/astro.config.mjs index c80aaeb..6666f9a 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -16,7 +16,10 @@ export default defineConfig({ context: "server", access: "secret", }), - SENDMAIL_BIN: envField.string({ context: "server", access: "secret" }), + SMTP_HOST: envField.string({ context: "server", access: "secret" }), + SMTP_PORT: envField.number({ context: "server", access: "secret" }), + SMTP_USER: envField.string({ context: "server", access: "secret" }), + SMTP_PASSWORD: envField.string({ context: "server", access: "secret" }), }, }, site: "https://joeac.net", diff --git a/website/src/actions/otp/send-otp.ts b/website/src/actions/otp/send-otp.ts index b349feb..23f8dc0 100644 --- a/website/src/actions/otp/send-otp.ts +++ b/website/src/actions/otp/send-otp.ts @@ -1,9 +1,14 @@ import crypto from "node:crypto"; -import { SENDMAIL_BIN } from "astro:env/server"; import nodemailer from "nodemailer"; import { z } from "astro/zod"; import { defineAction } from "astro:actions"; import { db, Otp } from "astro:db"; +import { + SMTP_HOST, + SMTP_PASSWORD, + SMTP_PORT, + SMTP_USER, +} from "astro:env/server"; export default defineAction({ input: z.object({ @@ -46,6 +51,13 @@ to do anything.`, } const transporter = nodemailer.createTransport({ - sendmail: true, - path: SENDMAIL_BIN, + host: SMTP_HOST, + port: SMTP_PORT, + secure: false, + authMethod: "PLAIN", + auth: { + type: "login", + user: SMTP_USER, + pass: SMTP_PASSWORD, + }, }); diff --git a/website/src/actions/sendmail.ts b/website/src/actions/sendmail.ts index 3b2d242..bb7d2eb 100644 --- a/website/src/actions/sendmail.ts +++ b/website/src/actions/sendmail.ts @@ -1,9 +1,15 @@ import { z } from "astro/zod"; -import { actions, defineAction } from "astro:actions"; +import { defineAction } from "astro:actions"; import nodemailer from "nodemailer"; -import { MAX_DAILY_EMAILS, SENDMAIL_BIN } from "astro:env/server"; -import { and, db, eq, gte, lte, SendmailToken, SentEmails } from "astro:db"; -import { isToken } from "typescript"; +import { + MAX_DAILY_EMAILS, + SMTP_HOST, + SMTP_PASSWORD, + SMTP_PORT, + SMTP_USE_TLS, + SMTP_USER, +} from "astro:env/server"; +import { and, db, eq, gte, SendmailToken, SentEmails } from "astro:db"; export default defineAction({ input: z.object({ @@ -73,6 +79,13 @@ async function sendmail({ } const transporter = nodemailer.createTransport({ - sendmail: true, - path: SENDMAIL_BIN, + host: SMTP_HOST, + port: SMTP_PORT, + secure: false, + authMethod: "PLAIN", + auth: { + type: "login", + user: SMTP_USER, + pass: SMTP_PASSWORD, + }, });