Send email with Rust

A reqwest POST with a typed response, done. Sending email from Rust skips the SMTP crates entirely.

Verified By George Hartley, Co-founder · Updated July 20, 2026

Skip the SMTP crates

lettre is solid if you genuinely need SMTP. But an SMTP crate brings TLS features, connection pools, and builder ceremony to a problem that, for most services, is one HTTP request with serde_json.

One POST, and the send is handled

RustPOST /v1/my/messages
reqwest::Client::new()
  .post("https://api.nitrosend.com/v1/my/messages")
  .bearer_auth(std::env::var("NITROSEND_API_KEY")?)
  .json(&serde_json::json!({
    "from": "[email protected]", "to": "[email protected]",
    "subject": "Welcome", "html": "<p>You're in.</p>"
  }))
  .send().await?;

The ? operator carries your error handling, the response deserializes into whatever type you define, and there is no mail server in your dependency tree.

The platform side moves at a pace Rust people will appreciate: one recent week shipped a rebuilt promptable email builder, five provider integrations, OAuth agent connect, and thirty-plus fixes from live sessions. Fast tools deserve fast infrastructure.

A craft take Rust minimalists will like, from studying 47 of the best email designs of 2026: plain text outperforms 95 percent of HTML email, and restraint beats complexity every time. The same taste that trims your dependency tree ships better email.

Full parameters, responses, and error codes live in the REST API docs and the API reference.

Python Node.js PHP Go Rust +5
send.py requests ยท stdlib-adjacent
import requests

requests.post(
  "https://api.nitrosend.com/v1/messages",
  headers={"Authorization": f"Bearer {KEY}"},
  json={"to": to, "subject": subj,
        "html": body})
202 ACCEPTED
{ "id": "msg_9f2c",
  "status": "accepted" }

And the part no library gives you

The same account exposes an MCP server, so the agent writing your code can also run your email. Point Claude, Cursor, or Codex at api.nitrosend.com/mcp and it composes, previews, and stages sends, with a human approving every one. The API is for your code. The MCP is for your agent. One platform either way.

Every send comes back with a message ID, and delivery events follow on your webhook: delivered, opened, bounced. No dashboard required to know what happened.

Go deeper

Guides

First send in thirty seconds.

Simple pricing. Unlimited contacts.

Every plan includes full stack emailing: Flows, Newsletter Campaigns and Transactional Email, plus our NitroWheel LLM and all agent integrations (Claude, ChatGPT, Codex, Cursor and others). Pay for what you send, not who you store.

Free
$0
forever
  • Emails 8,000then 500/mo
  • Email types Transactional & Marketing
  • AI actions 20/mo
  • Contacts Free & Unlimited
  • Brands 1
  • Seats 1
Start free
Ultra
$100
per month
  • Emails 125,000/month
  • AI actions 5,000/mo
  • Brands 5
  • Seats 10 · Domains 3
  • Frontier AI Included
  • Dedicated IP Available
Get started
Enterprise
$300
per month
  • AI actions Unlimited
  • Unlimited brands & domains Included
  • SSO / SAML Included
  • 99.9% SLA Included
Get started

Free forever. No credit card required. See full comparison →