SKILL·2A993F

sending-emails

mailtrap
Updated Yesterday
7
1
7
View on GitHub
Developmentaiapi

About

This skill assists developers in integrating, configuring, and troubleshooting Mailtrap for live email sending via Email API or SMTP. It covers transactional and bulk streams, including batch submissions, for wiring outbound mail from an application. Use it when building or debugging email-sending integrations.

Quick Install

Claude Code

Recommended
Primary
npx skills add mailtrap/mailtrap-skills -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/mailtrap/mailtrap-skills
Git CloneAlternative
git clone https://github.com/mailtrap/mailtrap-skills.git ~/.claude/skills/sending-emails

Copy and paste this command in Claude Code to install this skill

Documentation

Sending emails (Mailtrap)

Overview

Mailtrap sends live email over Email API (REST) or SMTP. Two streams apply for API/SMTP: Transactional (non-promotional, app-generated) and Bulk (promotional / marketing volume). Batch is not a third stream: it is how you submit many messages in one request on whichever stream matches the content. Campaigns are a separate product path for promotional mail to Mailtrap contacts. Pair this sheet with the Transactional / Bulk developer pages when building or debugging integrations (including with AI-assisted coding).

How to integrate (preference order)

Preferred order:

  1. Plugin or integration for the user's platform (no-code or minimal-config) where available
  2. Official SDK for your language when one exists (maintained clients, typed helpers, less room for URL/auth mistakes).
  3. HTTP Email API when there is no SDK or the SDK does not fit (direct POST to /api/send or /api/batch with JSON).
  4. SMTP only when you really need it (legacy stack, host/platform that only speaks SMTP, or hard constraints that rule out HTTP).

Choosing how to send

ApproachUse when
Transactional, single messageEmail generated by your app (password resets, receipts, notifications, alerts). One logical message per POST https://send.api.mailtrap.io/api/send
BulkPromotional email to contacts that you manage on your side and send at volume through Mailtrap. Not the same as "batch": bulk is the stream, not the batch endpoint.
BatchYou have multiple different messages to hand off at the same time (up to 500 per request). Cuts HTTP overhead; can be applied to both transactional and bulk
CampaignsPromotional email to recipients stored as Mailtrap contacts, using Mailtrap Campaigns (audiences, scheduling, reporting in the product). Recommended to avoid implementing contact management and email sending logic; requires UI setup before sends flow—this skill does not replace that workflow.

Before generating SDK code: read the README of the relevant SDK repository linked in the SDKs section below for current method signatures, constructor options, and examples. Do not rely on memory.

Related skills: authorizing-api-requests (tokens, env vars, auth headers), using-email-templates (template UUID and variables), testing-with-sandbox (safe testing), setting-up-sending-domain (verification before send).

When not to use

  • Sandbox only—capturing mail without delivery, reading messages in a sandbox (testing-with-sandbox).
  • The main ask is webhooks, step-by-step Campaigns UI setup, or deliverability deep-dives.
  • Exhaustive API reference—once the user's path is clear, link the official send docs for full schemas, optional fields, and edge cases.

Quick reference

Email API

StreamSend EndpointBatch EndpointAuthorization Header
TransactionalPOST https://send.api.mailtrap.io/api/sendPOST https://send.api.mailtrap.io/api/batchAuthorization: Bearer $MAILTRAP_API_TOKEN
Bulk (promotional / marketing volume)POST https://bulk.api.mailtrap.io/api/sendPOST https://bulk.api.mailtrap.io/api/batchAuthorization: Bearer $MAILTRAP_API_TOKEN

SMTP

SettingTransactionalBulk
Hostlive.smtp.mailtrap.iobulk.smtp.mailtrap.io
Port587 (also 25, 2525, 465 with SSL)587 (also 25, 2525, 465 with SSL)
Usernameapiapi
PasswordAPI token ($MAILTRAP_API_TOKEN)API token ($MAILTRAP_API_TOKEN)

Tokens

Use $MAILTRAP_API_TOKEN in either Authorization: Bearer ... or Api-Token: .... The same token works on both send.api.mailtrap.io and bulk.api.mailtrap.io as long as its scope covers the stream. Full guidance (scope, storage, rotation) lives in skill authorizing-api-requests.

Rate limits

ScopeLimitWindow
Sending API (per token)150 requests10 seconds

Use backoff on 429.

JSON body (non-template)

Typical fields include from, to, subject, and text and/or html. Optional: category, custom_variables. Exact request bodies: Transactional send and Bulk send.

Examples (curl)

Transactional send (send.api.mailtrap.io):

curl -X POST https://send.api.mailtrap.io/api/send \
  -H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": {"email": "hello@yourdomain.com", "name": "Your App"},
    "to": [{"email": "user@example.com"}],
    "subject": "Hello",
    "text": "Plain text body"
  }'

Bulk stream uses the same path and JSON shape on the bulk host (same env var; the token only needs bulk-stream scope):

curl -X POST https://bulk.api.mailtrap.io/api/send \
  -H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": {"email": "hello@yourdomain.com", "name": "Your App"},
    "to": [{"email": "user@example.com"}],
    "subject": "Promotional",
    "html": "<p>HTML body</p>"
  }'

Batch (array of messages; up to 500 per request — see API docs for full schema):

curl -X POST https://send.api.mailtrap.io/api/batch \
  -H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"from":{"email":"a@example.com"},"to":[{"email":"b@example.com"}],"subject":"One","text":"..."}]}'

JSON body (template)

Use template_uuid and template_variables instead of raw text/html to use a template hosted by Mailtrap. Minimal example:

curl -X POST https://send.api.mailtrap.io/api/send \
  -H "Authorization: Bearer $MAILTRAP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": {"email": "hello@yourdomain.com", "name": "Your App"},
    "to": [{"email": "user@example.com"}],
    "template_uuid": "your-template-uuid",
    "template_variables": {"user_name": "Jane"}
  }'

See skill using-email-templates and the same API operations as non-template sends.

SDKs

Suppressions

Mailtrap automatically manages suppressions for addresses that hard bounce, report spam, or unsubscribe, and will not send emails to these suppressed recipients again. For details, see the Suppressions documentation.

Common mistakes

MistakeFix
Confusing batch with bulkBatch = many messages in one /api/batch request. Bulk = promotional stream/host and token
Promotional API mail on transactional hostUse bulk base URL and bulk token for promotional content you generate in code
Bulk traffic on send.api.mailtrap.ioPromotional/bulk stream uses bulk.api.mailtrap.io
Using sandbox SMTP host for live sendingLive sending uses live.smtp.mailtrap.io or bulk.smtp.mailtrap.io
SMTP username is an email addressUsername is api; password is the API token
Sending before domain is verifiedComplete Sending Domains setup and compliance (see setting-up-sending-domain)
Guessing SDK API from memoryRead the SDK README and OpenAPI-linked examples; do not invent constructors or method names
Choosing SMTP first for a greenfield appPrefer platform integration if one exists, then SDK, then HTTP API; SMTP only when necessary (see How to integrate)

GitHub Repository

mailtrap/mailtrap-skills
Path: skills/sending-emails
0
FAQ

Frequently asked questions

What is the sending-emails skill?

sending-emails is a Claude Skill by mailtrap. Skills package instructions and resources that Claude loads on demand, so Claude can perform sending-emails-related tasks without extra prompting.

How do I install sending-emails?

Use the install commands on this page: add sending-emails to Claude Code as a plugin, or clone its repository into your skills directory, then restart Claude so it picks up the skill.

What category does sending-emails belong to?

sending-emails is in the Development category, tagged ai and api.

Is sending-emails free to use?

Yes. sending-emails is listed on AIMCP and free to install.

Related Skills

qmd
Development

qmd is a local search and indexing CLI tool that enables developers to index and search through local files using hybrid search combining BM25, vector embeddings, and reranking. It supports both command-line usage and MCP (Model Context Protocol) mode for integration with Claude. The tool uses Ollama for embeddings and stores indexes locally, making it ideal for searching documentation or codebases directly from the terminal.

View skill
subagent-driven-development
Development

This skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.

View skill
mcporter
Development

The mcporter skill enables developers to manage and call Model Context Protocol (MCP) servers directly from Claude. It provides commands to list available servers, call their tools with arguments, and handle authentication and daemon lifecycle. Use this skill for integrating and testing MCP server functionality in your development workflow.

View skill
adk-deployment-specialist
Development

This skill deploys and orchestrates Vertex AI ADK agents using A2A protocol, managing AgentCard discovery, task submission, and supporting tools like Code Execution Sandbox and Memory Bank. It enables building multi-agent systems with sequential, parallel, or loop orchestration patterns in Python, Java, or Go. Use it when asked to deploy ADK agents or orchestrate agent workflows on Google Cloud.

View skill