MepMail Docs

SDKs

Use os SDKs oficiais do Resend contra a sua instância MepMail — não há cliente nosso para instalar.

O MepMail fala o protocolo do Resend, então não existe SDK nosso para instalar. Os SDKs oficiais do Resend funcionam como estão, bastando apontá-los para a origem da API da sua instância — o que também significa que sair do Resend custa uma linha, não uma reescrita de cada chamada.

Duas coisas que o MepMail publica no npm não são SDKs — o servidor MCP local e a CLI de migração. Estão em Pacotes npm.

Cada trecho abaixo foi conferido no código-fonte do próprio SDK, e Node e Python foram executados contra uma instância real (envio, com delivered).

O que os SDKs oficiais alcançam

Alcança o MepMailNão implementado
emails domains contacts audiences broadcasts contactProperties segments suppressions templates topics webhooksautomations events logs oauthGrants

A coluna da direita responde 404. Se alguma chamada de que você depende estiver lá, fale com a gente — o formato de comunicação é compatível, então o endpoint costuma ser trabalho de um dia, não de um redesenho.

URL base

https://api.mepmail.dev — o que todos os exemplos desta página usam.

O cadastro está aberto — sem convite e sem cartão: crie sua conta em mepmail.dev/signup. O plano Free envia até 100 e-mails por dia UTC.

No painel, você pode solicitar um e-mail de teste para o seu próprio endereço sem adicionar um domínio nem criar uma chave de API. Para integrar seu produto ou agente, verifique seu domínio de envio em Domínios, crie uma chave em Chaves de API e use a origem da API acima com o SDK.

Barra final

A URL base é unida ao caminho da requisição por cada SDK, e eles divergem sobre o caminho já começar ou não com barra. Errar isso é um 404 em toda chamada, então vale copiar exatamente:

URL baseSDKs
Sem barra finalNode, Python, Rust, Elixir
Exige barra finalGo, Ruby
IndiferentePHP, .NET

Node.js / TypeScript

resend no npm — Node 18+.

npm install resend
import { Resend } from "resend";

const resend = new Resend("ms_123", {
  baseUrl: "https://api.mepmail.dev",
});

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

Python

resend no PyPI — Python 3.9+.

pip install resend
import resend

resend.api_key = "ms_123"
resend.api_url = "https://api.mepmail.dev"  # sem barra no final

email = resend.Emails.send({
    "from": "Acme <[email protected]>",
    "to": "[email protected]",
    "subject": "Olá do MepMail",
    "html": "<strong>Funciona!</strong>",
})

PHP

resend/resend-php no Packagist — PHP 8.1+.

Em PHP a URL base não é argumento de construtor: o SDK a lê da variável de ambiente RESEND_BASE_URL no momento em que o cliente é criado.

composer require resend/resend-php
putenv("RESEND_BASE_URL=https://api.mepmail.dev");

$resend = Resend::client('ms_123');

$email = $resend->emails->send([
    'from' => 'Acme <[email protected]>',
    'to' => '[email protected]',
    'subject' => 'Olá do MepMail',
    'html' => '<strong>Funciona!</strong>',
]);

Ruby

resend no RubyGems — Ruby 3.0+.

O Ruby também lê apenas a variável de ambiente — e a lê uma única vez, quando a biblioteca é carregada, então ela precisa existir antes do require "resend". Repare na barra final.

gem install resend
ENV["RESEND_BASE_URL"] = "https://api.mepmail.dev/"

require "resend"
Resend.api_key = "ms_123"

email = Resend::Emails.send({
  "from" => "Acme <[email protected]>",
  "to" => "[email protected]",
  "subject" => "Olá do MepMail",
  "html" => "<strong>Funciona!</strong>"
})

Go

github.com/resend/resend-go/v4 — Go 1.21+.

Use o módulo com /v4. O github.com/resend/resend-go sem o sufixo é uma tag de 2023 que não compila mais.

go get github.com/resend/resend-go/v4
import (
    "net/url"

    "github.com/resend/resend-go/v4"
)

client := resend.NewClient("ms_123")
client.BaseURL, _ = url.Parse("https://api.mepmail.dev/")

sent, err := client.Emails.Send(&resend.SendEmailRequest{
    From:    "Acme <[email protected]>",
    To:      []string{"[email protected]"},
    Subject: "Olá do MepMail",
    Html:    "<strong>Funciona!</strong>",
})

Rust

resend-rs no crates.io — async (tokio + reqwest).

[dependencies]
resend-rs = "0.32"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
use resend_rs::types::CreateEmailBaseOptions;
use resend_rs::{Config, Resend};

let resend = Resend::with_config(
    Config::builder("ms_123")
        .base_url("https://api.mepmail.dev".parse()?)
        .build(),
);

let sent = resend
    .emails
    .send(
        CreateEmailBaseOptions::new(
            "Acme <[email protected]>",
            ["[email protected]"],
            "Olá do MepMail",
        )
        .with_html("<strong>Funciona!</strong>"),
    )
    .await?;

Java

O SDK oficial de Java fixa https://api.resend.com em uma constante e não expõe nenhuma forma de trocá-la, então não há trecho Java para apontar para nós — fale HTTP direto:

var body = """
    {
      "from": "Acme <[email protected]>",
      "to": ["[email protected]"],
      "subject": "Olá do MepMail",
      "html": "<strong>Funciona!</strong>"
    }
    """;

var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.mepmail.dev/emails"))
    .header("Authorization", "Bearer ms_123")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

var response = HttpClient.newHttpClient()
    .send(request, HttpResponse.BodyHandlers.ofString());

.NET

Resend no NuGet — alvo net8.0.

dotnet add package Resend
using Resend;

var options = new ResendClientOptions
{
    ApiToken = "ms_123",
    ApiUrl = "https://api.mepmail.dev",
};

var resend = ResendClient.Create(options);

await resend.EmailSendAsync(new EmailMessage
{
    From = "Acme <[email protected]>",
    To = { "[email protected]" },
    Subject = "Olá do MepMail",
    HtmlBody = "<strong>Funciona!</strong>",
});

Elixir

resend no Hex — Elixir 1.15+. Este é mantido pela comunidade, não publicado pelo Resend, então considere o ritmo de releases dele com a devida reserva.

# mix.exs
def deps do
  [{:resend, "~> 1.0-rc"}]
end
client = Resend.client(
  api_key: "ms_123",
  base_url: "https://api.mepmail.dev"
)

{:ok, email} =
  Resend.Emails.send(client, %{
    from: "Acme <[email protected]>",
    to: "[email protected]",
    subject: "Olá do MepMail",
    html: "<strong>Funciona!</strong>"
  })

O relay SMTP

Prefere SMTP? O MepMail também roda um relay de submissão (STARTTLS, porta 2587) para clientes legados e bibliotecas que não conseguem trocar a URL base — o caso do Java acima é um deles. A credencial é uma chave de API, e as regras de domínio remetente são as mesmas da API. Veja Auto-hospedagem → relay SMTP.

Nesta página