"use server" import { z } from 'zod' import { Resend } from 'resend' import { isSpam } from '@/utils/detectSpam' /** * Send email through Resend API * * @param toEmail * @param prevState * @param formData */ export async function send(toEmail: string, prevState: any, formData: FormData) { const schema = z.object({ email: z.string().email(), subject: z.string(), name: z.string(), message: z.string() }); const validatedFields = schema.safeParse({ name: formData.get("name"), email: formData.get("email"), subject: formData.get("subject"), message: formData.get("message"), }) if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors, message: "Nicht alle Felder waren gültig" } } if (isSpam(validatedFields.data.message)) { return { message: "Ihre Nachricht wurde als unerwünschte Werbung eingestuft und nicht gesendet." } } try { const resend = new Resend(process.env.RESEND_API_KEY); const resp = await resend.emails.send({ from: 'noreply@dreikoenige.berlin', replyTo: validatedFields.data.email, to: toEmail, subject: `Über Kontaktformular: ${validatedFields.data.subject}`, text: `Nachricht von ${validatedFields.data.name} (${validatedFields.data.email}): \n\n ${validatedFields.data.message}` }); console.log(resp); } catch (e) { console.error(e); return { message: "Fehler beim senden der Nachricht." }; } return { message: "Ihre Nachricht wurde erfolgreich übermittelt" } }