import { Resend } from 'resend'; import { env } from '$env/dynamic/private'; import { env as publicEnv } from '$env/dynamic/public'; // Initialize Resend client const resend = new Resend(env.RESEND_API_KEY); const FROM_EMAIL = env.RESEND_FROM_EMAIL || 'noreply@ulo.ad'; const APP_URL = publicEnv.PUBLIC_APP_URL || 'https://ulo.ad'; /** * Send a team invitation email */ export async function sendTeamInvitationEmail( recipientEmail: string, inviterName: string, inviteToken: string ): Promise { try { const inviteUrl = `${APP_URL}/register?invite=${inviteToken}`; await resend.emails.send({ from: `ulo.ad <${FROM_EMAIL}>`, to: recipientEmail, subject: `${inviterName} hat dich zu seinem Team eingeladen - ulo.ad`, html: `

🔗 ulo.ad

Du wurdest zum Team eingeladen! 🎉

${inviterName} hat dich eingeladen, seinem Team bei ulo.ad beizutreten. Als Team-Mitglied kannst du Links erstellen und verwalten.

Als Team-Mitglied kannst du:

  • Links erstellen und verwalten
  • Deine eigenen Links bearbeiten und löschen
  • Mit dem Team zusammenarbeiten
✉️ Einladung annehmen

Falls der Button nicht funktioniert, kopiere diesen Link:

${inviteUrl}

⏰ Diese Einladung ist 7 Tage gültig

Diese Einladung wurde an ${recipientEmail} gesendet.

© ${new Date().getFullYear()} ulo.ad · ulo.ad

`, }); console.log('[EMAIL] Team invitation sent to:', recipientEmail); return true; } catch (error) { console.error('[EMAIL] Failed to send invitation email:', error); return false; } } /** * Send notification when invitation is accepted */ export async function sendInvitationAcceptedEmail( ownerEmail: string, memberName: string ): Promise { try { await resend.emails.send({ from: `ulo.ad <${FROM_EMAIL}>`, to: ownerEmail, subject: `${memberName} hat deine Einladung angenommen - ulo.ad`, html: `

🔗 ulo.ad

Neues Team-Mitglied! 🎊

${memberName} hat deine Einladung angenommen und ist jetzt Teil deines Teams.

✅ Das Team-Mitglied kann jetzt Links in deinem Account erstellen und verwalten.

👥 Team verwalten

© ${new Date().getFullYear()} ulo.ad · ulo.ad

`, }); console.log('[EMAIL] Acceptance notification sent to:', ownerEmail); return true; } catch (error) { console.error('[EMAIL] Failed to send acceptance notification:', error); return false; } } /** * Send welcome email to new users */ export async function sendWelcomeEmail(to: string, username: string): Promise { try { await resend.emails.send({ from: `ulo.ad <${FROM_EMAIL}>`, to, subject: 'Willkommen bei ulo.ad!', html: `

🔗 ulo.ad

Willkommen, ${username}!

Danke, dass du bei ulo.ad dabei bist. Wir freuen uns, dich an Bord zu haben.

Mit ulo.ad kannst du:

  • URLs kürzen und anpassen
  • Click-Analytics verfolgen
  • Links mit Tags und Workspaces organisieren
  • QR-Codes generieren
  • Ablaufdaten und Click-Limits setzen

© ${new Date().getFullYear()} ulo.ad

`, }); return true; } catch (error) { console.error('[EMAIL] Failed to send welcome email:', error); return false; } }