Email SDKs, by language.
Most email decisions come down to which SDK fits the language and runtime. This hub catalogs the SDK story per language, with editorial picks tied to the shared provider database. Type quality, edge-runtime support, idempotency-key exposure, and runtime ergonomics are the lenses that matter.
TypeScript and Node.js
4 picksMost providers ship a first-class Node.js SDK. The decision usually comes down to type quality, edge-runtime compatibility, and idempotency exposure.
Python
4 picksPython coverage is broad, but quality varies. Async support is the most common gap.
Go
4 picksGo is a strong story for transactional email at scale. Most major providers ship official packages with idiomatic interfaces.
Ruby
4 picksRuby support is concentrated around the established providers. Rails integrations through Action Mailer are the dominant pattern.
PHP
4 picksPHP support is dominated by Laravel-friendly SDKs. Symfony Mailer transports are the second pattern.
Rust
2 picksRust coverage is sparse. Resend ships an official crate; everyone else expects raw HTTP via reqwest.
Java and JVM
3 picksEnterprise-friendly. Most major providers ship Java SDKs; Spring and Micronaut integrations vary.
Elixir
3 picksThe Phoenix ecosystem leans on Swoosh adapters. Native SDKs are less common.
.NET and C#
3 picksThe major providers ship NuGet packages. Choice often comes down to existing Azure or AWS commitments.
CLI tooling
2 picksA growing number of providers ship a CLI for local sending, tail-style log inspection, and template management.
reading this as teams building autonomous agents
An agent stack treats email as a two-way primitive. Inbound has to arrive as structured JSON a tool call can consume, sends have to be safe to retry when a model loop repeats itself, and every action needs an audit trail. A provider without inbound parsing only solves half the problem.
Applied to email API SDKs, that means weighing inbound parsing, idempotency keys, webhook coverage, and operating track record ahead of the rest, against inbound parsing into tool calls and model-generated sends that must not duplicate.