import { serve } from "https://deno.land/std@0.190.0/http/server.ts"; const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type", }; interface ContactRequest { name: string; email: string; company: string; message: string; } const handler = async (req: Request): Promise => { if (req.method === "OPTIONS") { return new Response(null, { headers: corsHeaders }); } try { const { name, email, company, message }: ContactRequest = await req.json(); // Validate required fields if (!name || !email || !message) { throw new Error("Missing required fields"); } // Validate email format const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { throw new Error("Invalid email format"); } // Validate field lengths if (name.length > 100 || email.length > 255 || (company && company.length > 100) || message.length > 2000) { throw new Error("Field length exceeded"); } const RESEND_API_KEY = Deno.env.get("RESEND_API_KEY"); const recipientEmail = Deno.env.get("CONTACT_EMAIL") || "kontakt@example.com"; if (!RESEND_API_KEY) { throw new Error("RESEND_API_KEY not configured"); } const res = await fetch("https://api.resend.com/emails", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${RESEND_API_KEY}`, }, body: JSON.stringify({ from: "Lennart Svensson Konditorivaror ", to: [recipientEmail], reply_to: email, subject: `Kontaktförfrågan från ${name}`, html: `

Ny kontaktförfrågan

Namn: ${name}

E-post: ${email}

${company ? `

Företag: ${company}

` : ""}

Meddelande:

${message.replace(/\n/g, "
")}

`, }), }); if (!res.ok) { const error = await res.text(); console.error("Resend API error:", error); throw new Error("Failed to send email"); } const data = await res.json(); console.log("Contact email sent successfully:", data); return new Response(JSON.stringify({ success: true }), { status: 200, headers: { "Content-Type": "application/json", ...corsHeaders }, }); } catch (error: any) { console.error("Error in send-contact-email function:", error); return new Response( JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json", ...corsHeaders }, } ); } }; serve(handler);