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/ranlaRANLA_API_KEY=rnl_your_key_herePayload 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 nodemailerimport 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>',
})Related
- Node.js + Nodemailer
- Better Auth (if Payload auth uses Better Auth)
- Next.js