Payload CMS email with Ranla

Payload apps need transactional email for auth and notifications. Ranla ships a Payload 3 email adapter: supersendtxAdapter from supersendtx-payload (also supersendtx/payload).


Install

npm install supersendtx-payload @supersend/ranla
RANLA_API_KEY=rnl_your_key_here

Payload email adapter

// payload.config.ts
import { buildConfig } from 'payload'
import { supersendtxAdapter } from 'supersendtx-payload'

export default buildConfig({
  email: supersendtxAdapter({
    defaultFromAddress: '[email protected]',
    defaultFromName: 'Acme',
    // apiKey: process.env.RANLA_API_KEY,
  }),
  // collections, …
})

Payload then routes auth mail and payload.sendEmail() through Ranla (product=payload tag).

Options

Option Purpose
defaultFromAddress Verified From address (required)
defaultFromName Display name (required)
apiKey Falls back to RANLA_API_KEY
baseUrl Override API base (tests / self-hosted)
overrideRecipientAddress Force all mail to one address (local/dev)
client Inject a SuperSendTX instance (tests)

Nodemailer transport (optional)

If you prefer Nodemailer + @payloadcms/email-nodemailer:

npm install supersendtx-nodemailer @supersend/ranla nodemailer
import nodemailer from 'nodemailer'
import { createSuperSendTXTransport } from 'supersendtx-nodemailer'

export const transport = nodemailer.createTransport(
  createSuperSendTXTransport({
    apiKey: process.env.RANLA_API_KEY!,
  }),
)

Wire that transport into Payload’s Nodemailer email adapter for your Payload major version. Prefer the first-party supersendtxAdapter when you can.


Direct SDK

import { Ranla } from '@supersend/ranla'

const tx = new Ranla(process.env.RANLA_API_KEY!)

await tx.emails.send({
  from: '[email protected]',
  to: '[email protected]',
  subject: 'Welcome',
  html: '<p>Welcome.</p>',
})