MepMail Docs

Quickstart

Get MepMail running and send your first email in a few minutes.

MepMail runs the same whether we host it for you or you run it yourself — same dashboard, same API, same SDKs. Pick your deployment below; the tabs remember your choice across the docs.

1. Get MepMail

Accounts are provisioned by invitation — there is no public signup. Write to us and we set up your account, then you sign in at mepmail.je4ndev.com. The API is at api-mepmail.je4ndev.com.

2. Verify a sending domain

MepMail only sends from domains you have verified.

  1. In the dashboard, go to Domains and add a domain you control (e.g. acme.dev).
  2. Add the DNS records it shows you — a DKIM TXT record plus MAIL FROM records — at your DNS provider.
  3. Click Verify DNS records. MepMail also resolves the records live, so you can see immediately which ones are still missing.

Validation is asynchronous on the DNS provider's side: DKIM usually resolves in minutes, MAIL FROM can take longer. MepMail re-checks on its own every 15 minutes, so you never have to click twice.

3. Create an API key

Go to API keys and create one. The ms_ token is shown once — copy it now. Keys can be scoped to full access or sending-only, and optionally pinned to a single domain.

4. Send an email

Your API base URL:

https://api-mepmail.je4ndev.com

With curl:

curl -X POST https://api-mepmail.je4ndev.com/emails \
  -H "Authorization: Bearer ms_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <[email protected]>",
    "to": ["[email protected]"],
    "subject": "Hello from MepMail",
    "html": "<strong>It works!</strong>"
  }'

Or with the official Resend SDK for Node (npm install resend), pointed at your base URL:

import { Resend } from "resend";

const resend = new Resend("ms_...", {
  baseUrl: "https://api-mepmail.je4ndev.com",
});

const { data, error } = await resend.emails.send({
  from: "Acme <[email protected]>",
  to: "[email protected]",
  subject: "Hello from MepMail",
  html: "<strong>It works!</strong>",
});

if (error) console.error(error.name, error.message);
else console.log("sent", data.id);

Both return { "id": "..." }. Watch the email move from queued to delivered on the Emails page.

On a self-hosted instance, delivery events (delivered, bounced, complained) require the SES event pipeline configured in Self-hosting → SES events. On the managed service they flow automatically.

Already on Resend? Keep the SDK you have and point it here: set the base URL to your MepMail origin and use your ms_ key. The wire format is identical, and SDKs has the exact option for each language — including the ones that only read it from an environment variable.

Next steps

  • Concepts for contacts, segments, topics, and broadcasts.
  • SDKs for how to point each official Resend SDK at your instance.
  • API reference for every endpoint.
  • Self-hosting for production deployment, the environment reference, and the SMTP relay.

On this page