diff --git a/supabase/functions/send-notification/index.ts b/supabase/functions/send-notification/index.ts index ef217ed..0bbca82 100644 --- a/supabase/functions/send-notification/index.ts +++ b/supabase/functions/send-notification/index.ts @@ -33,6 +33,36 @@ interface EmailPayload { from_email: string; } +// Send via Mailketing API +async function sendViaMailketing(payload: EmailPayload, apiToken: string): Promise { + const params = new URLSearchParams(); + params.append('api_token', apiToken); + params.append('from_name', payload.from_name); + params.append('from_email', payload.from_email); + params.append('recipient', payload.to); + params.append('subject', payload.subject); + params.append('content', payload.html); + + console.log(`Sending email via Mailketing to ${payload.to}`); + + const response = await fetch('https://api.mailketing.co.id/api/v1/send', { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: params.toString(), + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error('Mailketing API error:', response.status, errorText); + throw new Error(`Mailketing API error: ${response.status} ${errorText}`); + } + + const result = await response.json(); + console.log('Mailketing API response:', result); +} + // Send via SMTP async function sendViaSMTP(payload: EmailPayload, config: SMTPConfig): Promise { const boundary = "----=_Part_" + Math.random().toString(36).substr(2, 9); @@ -284,10 +314,16 @@ serve(async (req: Request): Promise => { }; // Determine provider and send - const provider = settings.integration_email_provider || "smtp"; + const provider = settings.integration_email_provider || "mailketing"; console.log(`Sending email via ${provider} to ${recipient_email}`); switch (provider) { + case "mailketing": + const mailketingToken = settings.mailketing_api_token || settings.api_token; + if (!mailketingToken) throw new Error("Mailketing API token not configured"); + await sendViaMailketing(emailPayload, mailketingToken); + break; + case "smtp": await sendViaSMTP(emailPayload, { host: settings.smtp_host,