Overview
Compare what each of the 16 providers supports before you pick one.
Each provider has its own subpath, @effect-kit/emails/<name>, and provides the same Email service. The matrix shows what each one accepts. A message that uses a feature the provider lacks fails with UnsupportedFeatureError before any request.
| Provider | Text | HTML | Both | Sender name | Cc | Bcc | Reply-to | Headers | Attachments | Inline images | Idempotency |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Resend | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | replay, 24 hours |
| Amazon SES | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | no |
| Postmark | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | no |
| SendGrid | yes | yes | yes | yes | yes | yes | one | yes | yes | yes | no |
| Mailgun | yes | yes | yes | yes | yes | yes | multiple | yes | yes | no | no |
| SMTP (Nodemailer) | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | no |
| Brevo | yes | yes | yes | yes | yes | yes | one | yes | no | no | reject, 30 minutes |
| MailerSend | yes | yes | yes | yes | yes | yes | one | yes | no | no | no |
| Mailtrap | yes | yes | yes | yes | yes | yes | one | yes | yes | yes | no |
| Mailchimp Transactional | yes | yes | yes | yes | yes | yes | multiple | yes | yes | no | no |
| Azure Communication Services | yes | yes | yes | no | yes | yes | multiple | yes | yes | yes | no |
| ZeptoMail | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | no |
| Scaleway | yes | yes | yes | yes | yes | yes | multiple | yes | yes | no | no |
| Lettermint | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | replay, 24 hours |
| Plunk | no | yes | no | yes | no | no | none | no | no | no | no |
| eusend | yes | yes | yes | yes | yes | yes | multiple | yes | yes | yes | replay |
Pick by the features your messages need: attachments and inline images, how many reply-to addresses, a sender name, and whether you need an idempotency key. Only Resend, Lettermint, eusend and Brevo support idempotency keys.
Plunk is HTML only with one recipient, and Azure takes no sender name. Read the same flags at runtime from email.capabilities, described in Capabilities.