General
Email

Custom Provider

Learn how to use a custom provider for sending emails.

You can add any email provider by creating a new file in the packages/email/provider/ folder and implementing the EmailProvider type:

packages/email/provider/my-provider/index.ts
import { keys } from '../../../keys';
import { type EmailPayload, type EmailProvider } from '../types';

class MyEmailProvider implements EmailProvider {
  private readonly from: string;

  constructor() {
    const from = keys().EMAIL_FROM;
    if (!from) {
      throw new Error('Missing EMAIL_FROM in environment configuration');
    }
    this.from = from;
  }

  public async sendEmail(payload: EmailPayload) {}
}

export default new MyEmailProvider();

Add the new provider in packages/email/provider/index.ts:

packages/email/provider/index.ts
// export { default as EmailProvider } from './nodemailer';
// export { default as EmailProvider } from './postmark';
// export { default as EmailProvider } from './resend';
// export { default as EmailProvider } from './sendgrid';
export { default as EmailProvider } from './my-provider';