Mailtrap
Send through the Mailtrap Email Sending API with full field support and provider-side message inspection.
Capabilities
| Repeated headers | Idempotency | Scheduling | Personalized |
|---|---|---|---|
| No | none | No | expanded |
These values come from the adapter's exported capabilities declaration. The field support matrix covers normalized message fields.
The Mailtrap adapter calls the Mailtrap Email Sending API with plain fetch. It supports every common transactional field, and Mailtrap's inspection tooling makes it a natural pick for staging environments.
Configure
Create a Mailtrap API token with Email Sending permission and verify your sending domain.
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.id); // first entry of Mailtrap's message_idsOne 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 mailtrapMAILTRAP_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-runDrop --dry-run for one real smoke send, and confirm the token targets the intended Mailtrap project before pointing production at it.
