fix: emailJS implementation

This commit is contained in:
Melvin Ragusa
2026-01-23 17:19:35 +01:00
parent a9c259f60f
commit 7ee61ed342
3 changed files with 43 additions and 15 deletions

4
.env.example Normal file
View File

@@ -0,0 +1,4 @@
VITE_EMAILJS_SERVICE_ID=your_service_id_here
VITE_EMAILJS_TEMPLATE_ID_ADMIN=your_admin_template_id_here
VITE_EMAILJS_TEMPLATE_ID_USER=your_user_template_id_here
VITE_EMAILJS_PUBLIC_KEY=your_public_key_here

View File

@@ -5,10 +5,11 @@ import { useTranslation } from '../i18n';
import { Button, Input, Textarea } from '../components/ui'; import { Button, Input, Textarea } from '../components/ui';
import styles from './Contact.module.css'; import styles from './Contact.module.css';
// EmailJS configuration - replace these with your actual IDs // EmailJS configuration
const EMAILJS_SERVICE_ID = 'YOUR_SERVICE_ID'; const EMAILJS_SERVICE_ID = import.meta.env.VITE_EMAILJS_SERVICE_ID;
const EMAILJS_TEMPLATE_ID = 'YOUR_TEMPLATE_ID'; const EMAILJS_TEMPLATE_ID_ADMIN = import.meta.env.VITE_EMAILJS_TEMPLATE_ID_ADMIN;
const EMAILJS_PUBLIC_KEY = 'YOUR_PUBLIC_KEY'; const EMAILJS_TEMPLATE_ID_USER = import.meta.env.VITE_EMAILJS_TEMPLATE_ID_USER;
const EMAILJS_PUBLIC_KEY = import.meta.env.VITE_EMAILJS_PUBLIC_KEY;
interface FormData { interface FormData {
name: string; name: string;
@@ -70,17 +71,29 @@ export function Contact() {
setSubmitStatus('idle'); setSubmitStatus('idle');
try { try {
await emailjs.send( const templateParams = {
EMAILJS_SERVICE_ID,
EMAILJS_TEMPLATE_ID,
{
from_name: formData.name, from_name: formData.name,
from_email: formData.email, from_email: formData.email,
subject: formData.subject, subject: formData.subject,
message: formData.message, message: formData.message,
}, };
await Promise.all([
// Send to Admin
emailjs.send(
EMAILJS_SERVICE_ID,
EMAILJS_TEMPLATE_ID_ADMIN,
templateParams,
EMAILJS_PUBLIC_KEY EMAILJS_PUBLIC_KEY
); ),
// Send Auto-reply to User
emailjs.send(
EMAILJS_SERVICE_ID,
EMAILJS_TEMPLATE_ID_USER,
templateParams,
EMAILJS_PUBLIC_KEY
),
]);
setSubmitStatus('success'); setSubmitStatus('success');
setFormData({ name: '', email: '', subject: '', message: '' }); setFormData({ name: '', email: '', subject: '', message: '' });

11
src/vite-env.d.ts vendored
View File

@@ -1,5 +1,16 @@
/// <reference types="vite/client" /> /// <reference types="vite/client" />
interface ImportMetaEnv {
readonly VITE_EMAILJS_SERVICE_ID: string
readonly VITE_EMAILJS_TEMPLATE_ID_ADMIN: string
readonly VITE_EMAILJS_TEMPLATE_ID_USER: string
readonly VITE_EMAILJS_PUBLIC_KEY: string
}
interface ImportMeta {
readonly env: ImportMetaEnv
}
declare module '*.module.css' { declare module '*.module.css' {
const classes: { [key: string]: string }; const classes: { [key: string]: string };
export default classes; export default classes;