Email SDK
Adapters

Mailtrap

Send through the Mailtrap Email Sending API with full field support and provider-side message inspection.

The Mailtrap adapter calls the Mailtrap Email Sending API over fetch — no extra dependency. It supports every common transactional field, and Mailtrap's inspection tooling makes it a natural pick for staging environments.

Mailtrap logo
Mailtrap
@opencoredev/email-sdk/mailtrap
OfficialNot API testedRequest tested
Open website

Configure

Create a Mailtrap API token with Email Sending permission and verify your sending domain.

lib/email.ts
import { createEmailClient } from "@opencoredev/email-sdk";
import { mailtrap } from "@opencoredev/email-sdk/mailtrap";

export const email = createEmailClient({
  adapters: [mailtrap({ apiKey: process.env.MAILTRAP_API_KEY! })],
});

Prop

Type

Send

Mailtrap maps cc, bcc, headers, attachments, metadata, and tags — with two limits: at most one tag (its value becomes the Mailtrap category) and at most one replyTo. metadata is sent as custom_variables with values stringified (null becomes "").

const result = await email.send({
  from: "Acme <hello@acme.com>",
  to: "user@example.com",
  cc: "billing@acme.com",
  replyTo: "support@acme.com",
  subject: "Your receipt for order ord_123",
  html: "<p>Thanks for your order — receipt attached.</p>",
  tags: [{ name: "type", value: "receipt" }],
  metadata: { orderId: "ord_123" },
  attachments: [
    { filename: "receipt.pdf", path: "./receipts/ord_123.pdf" },
  ],
});

console.log(result.messageId); // first entry of Mailtrap's message_ids

One tag, one reply-to

A second tag or a second replyTo throws an EmailValidationError before any request. Trim to one of each when Mailtrap sits in a fallback route behind a multi-tag adapter.

Verify from the CLI

MAILTRAP_API_KEY="..." npx email-sdk doctor --adapter mailtrap
MAILTRAP_API_KEY="..." npx email-sdk send \
  --adapter mailtrap \
  --from "Acme <hello@acme.com>" \
  --to user@example.com \
  --subject "Mailtrap smoke test" \
  --text "It works" \
  --dry-run

Drop --dry-run for one real smoke send — and confirm the token targets the intended Mailtrap project before pointing production at it.

On this page