Skip to content

TypeScript API / @laikacms/server/oauth2 / EmailProvider

Interface: EmailProvider ​

Email provider interface. Implement this interface to integrate with any email service.

Works in both Cloudflare Workers and Node.js environments.

Example ​

typescript
// Cloudflare Workers with MailChannels
const mailChannelsProvider: EmailProvider = {
  async send(message) {
    const response = await fetch('https://api.mailchannels.net/tx/v1/send', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        personalizations: [{ to: [{ email: message.to }] }],
        from: { email: message.from },
        subject: message.subject,
        content: [
          { type: 'text/plain', value: message.text },
          { type: 'text/html', value: message.html },
        ],
      }),
    });
    return { success: response.ok };
  },
};

// Node.js with Nodemailer
const nodemailerProvider: EmailProvider = {
  async send(message) {
    const info = await transporter.sendMail({
      from: message.from,
      to: message.to,
      subject: message.subject,
      text: message.text,
      html: message.html,
    });
    return { success: true, messageId: info.messageId };
  },
};

Methods ​

send() ​

ts
send(message): Promise<EmailSendResult>;

Parameters ​

ParameterType
messageEmailMessage

Returns ​

Promise<EmailSendResult>

Released under the MIT License.