import { json, type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/node"; import { Form, useActionData, useLoaderData } from "@remix-run/react"; import { requireAuthLevel } from "~/utils/auth.server"; import DashboardLayout from "~/components/DashboardLayout"; import { sendNotificationEmail } from "~/utils/mail.server"; export async function loader({ request }: LoaderFunctionArgs) { // Require auth level 3 to access test email functionality const user = await requireAuthLevel(request, 3); return json({user}); } export async function action({ request }: ActionFunctionArgs) { await requireAuthLevel(request, 3); const formData = await request.formData(); const to = formData.get("to") as string; const subject = formData.get("subject") as string; const message = formData.get("message") as string; const isHtml = formData.get("isHtml") === "on"; if (!to || !subject || !message) { return json({ error: "All fields are required" }, { status: 400 }); } const result = await sendNotificationEmail(to, subject, message, isHtml); if (result.success) { return json({ success: "Email sent successfully!", messageId: result.messageId }); } else { return json({ error: `Failed to send email: ${result.error}` }, { status: 500 }); } } export default function TestEmail() { const { user } = useLoaderData(); const actionData = useActionData(); return (

Test Email

Use this form to test your email configuration. Only users with auth level 3 can access this feature.

{actionData?.error && (
{actionData.error}
)} {actionData?.success && (
{actionData.success} {actionData.messageId && (
Message ID: {actionData.messageId}
)}
)}