ZeptoMail
Send through Zoho ZeptoMail with automatic send-mail token prefixing.
The ZeptoMail adapter calls the Zoho ZeptoMail email API over fetch — no extra dependency. Paste your send mail token as-is: the adapter prepends Zoho's Zoho-enczapikey authorization prefix automatically when it is missing.
@opencoredev/email-sdk/zeptomailConfigure
Create a Mail Agent in ZeptoMail, copy its send mail token, and verify the sending domain.
import { createEmailClient } from "@opencoredev/email-sdk";
import { zeptomail } from "@opencoredev/email-sdk/zeptomail";
export const email = createEmailClient({
adapters: [zeptomail({ token: process.env.ZEPTOMAIL_TOKEN! })],
});Prop
Type
Send
ZeptoMail maps cc, bcc, replyTo, and attachments. Display names carry through to ZeptoMail's email_address recipient objects, and html/text become htmlbody/textbody.
const result = await email.send({
from: { email: "security@acme.com", name: "Acme Security" },
to: [{ email: "user@example.com", name: "Ada" }],
replyTo: "support@acme.com",
subject: "Reset your password",
html: '<p><a href="https://acme.com/reset?t=abc123">Reset your password</a></p>',
text: "Reset your password: https://acme.com/reset?t=abc123",
});
console.log(result.id); // ZeptoMail request_id (falls back to messageId or id)No headers, tags, or metadata
The adapter does not map custom headers, tags, or metadata to the ZeptoMail API, so any of them
throws an EmailValidationError before a request is made. See the field support
matrix for alternatives.
Verify from the CLI
ZEPTOMAIL_TOKEN="..." npx email-sdk doctor --adapter zeptomailZEPTOMAIL_TOKEN="..." npx email-sdk send \
--adapter zeptomail \
--from "Acme <hello@acme.com>" \
--to user@example.com \
--subject "ZeptoMail smoke test" \
--text "It works" \
--dry-runDrop --dry-run for one real send — that is the check that proves the token, Mail Agent, and sender domain are ready.
