Official clients for the Groundmail transactional email API:
Python, Go, Rust, Ruby, PHP, Laravel and Symfony Mailer. Node.js is on npm as groundmail.
Docs · Get a free account · groundmail.dev
| Language | Install | Source |
|---|---|---|
| Python (Django backend included) | pip install groundmail |
python/ |
| Go | go get github.com/Groundmail/groundmail-sdks/go |
go/ |
| Rust | cargo add groundmail |
rust/ |
| Ruby | gem install groundmail |
ruby/ |
| PHP | composer require groundmail/groundmail |
php/ · groundmail-php |
| Laravel | composer require groundmail/laravel |
laravel/ · groundmail-laravel |
| Symfony Mailer | composer require groundmail/symfony-mailer |
symfony-mailer/ · groundmail-symfony-mailer |
| Node.js / TypeScript | npm install groundmail |
npm |
Python
from groundmail import Groundmail
tx = Groundmail("gm_your_key_here")
result = tx.emails.send(
from_="you@yourdomain.com",
to="user@example.com",
subject="Hello",
html="<p>It works.</p>",
)
print(result["id"], result["status"])Go
client, err := groundmail.New("gm_your_key_here")
if err != nil {
log.Fatal(err)
}
result, err := client.Emails.Send(map[string]any{
"from": "you@yourdomain.com",
"to": "user@example.com",
"subject": "Hello",
"html": "<p>It works.</p>",
})Ruby
require "groundmail"
tx = Groundmail::Client.new("gm_your_key_here")
result = tx.emails.send(
from: "you@yourdomain.com",
to: "user@example.com",
subject: "Hello",
html: "<p>It works.</p>"
)Each folder has its own README with framework setup, errors and retries.
Found a bug or want something added? Open an issue. These SDKs are published here on each release, so we port fixes rather than merging pull requests directly.
- Mailboxes for your agents. Give an agent its own email address: it receives mail, replies in the thread and picks up sign-up codes on its own. No account needed to start. Agent mailboxes
- Each kind of mail on its own IPs. Transactional email (sign-in codes, password resets, receipts), product email and opt-in newsletters send from separate IPs, so your newsletter never shares a pool with your password resets. We run our own mail servers and never send cold outreach or bought lists.
- Start free. Free covers 3,000 emails a month. After that, pay as you go is $15 a month with 20,000 emails included, then from $0.70 per 1,000, less as you grow. Pricing
- Built for code and for agents. REST API, SMTP, SDKs for Node, Python, Go, PHP and Ruby, a CLI, and an MCP server for Claude, ChatGPT and Cursor.
| Use | Package |
|---|---|
| Node.js / TypeScript | groundmail on npm |
| Python (Django), Go, Ruby (Rails Action Mailer) | Groundmail/groundmail-sdks |
| PHP | Groundmail/groundmail-php |
| Laravel | Groundmail/groundmail-laravel |
| Symfony Mailer | Groundmail/groundmail-symfony-mailer |
| Nodemailer | Groundmail/groundmail-nodemailer |
| NestJS | Groundmail/nestjs-groundmail |
| Strapi | Groundmail/strapi-provider-email-groundmail |
| Medusa | Groundmail/medusa-notification-groundmail |
| AdonisJS | Groundmail/adonisjs-groundmail |
| Phoenix (Swoosh) | Groundmail/swoosh_groundmail |
| CLI | groundmail-cli on npm |
| MCP server (Claude, ChatGPT, Cursor) | Groundmail/groundmail-mcp |
| Agent skills and Claude Code plugin | Groundmail/groundmail-skills |
| Email templates (React Email, MJML, HTML) | Groundmail/email-templates |
Website · Docs · Pricing · Sign up free