Email Service Patterns

Email Service Patterns

ComeOnOliver Updated 61 repo stars

File contents

Email Service Patterns

Provider Abstraction

interface EmailProvider {
    send(opts: { to: string; subject: string; html: string; from?: string }): Promise<void>;
}

class SendGridProvider implements EmailProvider {
    async send(opts) { await sgMail.send({ ...opts, from: opts.from || DEFAULT_FROM }); }
}

class ResendProvider implements EmailProvider {
    async send(opts) { await resend.emails.send(opts); }
}

Template Engine

const templates = {
    welcome: (name: string) => ({ subject: 'Welcome!', html: `<h1>Hi ${name}</h1>` }),
    resetPassword: (link: string) => ({ subject: 'Reset Password', html: `<a href="${link}">Reset</a>` }),
};

Queue emails for reliability (Bull/BullMQ)

Track: delivered, opened, clicked, bounced via webhooks

Rate limiting, retry with exponential backoff

ComeOnOliver/skillshub/tree/main/skills/skillshub-team/catalog-batch5/email-service-patterns commit 2f8cb82f3d

Frequently asked questions

npx skillmds@latest add comeonoliver/email-service-patterns