diff --git a/.env.example b/.env.example index 79cb895..4ab3dbc 100644 --- a/.env.example +++ b/.env.example @@ -11,4 +11,6 @@ VITE_BREVO_API_KEY="" # Default sender email for system notifications VITE_BREVO_SENDER_EMAIL="noreply@example.com" # Display name for the sender email -VITE_BREVO_SENDER_NAME="No Reply" \ No newline at end of file +VITE_BREVO_SENDER_NAME="No Reply" +# Contact email for the contact page form to send to +VITE_CONTACT_EMAIL="" \ No newline at end of file diff --git a/src/routes/contact/+page.server.ts b/src/routes/contact/+page.server.ts new file mode 100644 index 0000000..7073ebc --- /dev/null +++ b/src/routes/contact/+page.server.ts @@ -0,0 +1,30 @@ +import type { Actions } from '@sveltejs/kit'; +import { fail } from '@sveltejs/kit'; +import { sendEmail } from '$lib/utils/brevo/email'; +import { VITE_CONTACT_EMAIL } from '$env/static/private'; +import logger from '$lib/utils/logger/logger'; + +export const actions: Actions = { + default: async ({ request }) => { + const formData = await request.formData(); + const name = formData.get('name') as string; + const email = formData.get('email') as string; + const message = formData.get('message') as string; + + const emailContent = ` +
You have a new contact form submission:
+Name: ${name}
+Email: ${email}
+Message:
+${message}
+ `; + + try { + await sendEmail('New Contact Form Submission', emailContent, VITE_CONTACT_EMAIL); + return { success: true }; + } catch (error) { + logger.error('Failed to send email:', error); + return fail(400, { error }); + } + } +}; diff --git a/src/routes/contact/+page.svelte b/src/routes/contact/+page.svelte new file mode 100644 index 0000000..271ffec --- /dev/null +++ b/src/routes/contact/+page.svelte @@ -0,0 +1,87 @@ + + +{#if submitted} +