Brevo (Sendinblue) + MailKite
Brevo (formerly Sendinblue) is a marketing and transactional email platform. Use MailKite as a drop-in replacement or alongside Brevo — same SMTP interface, better deliverability for developers.
What you need
- A verified domain with SPF + DKIM published
- Your API key (
mk_live_…) - Brevo account (optional — MailKite replaces or complements it)
Send email
Swap your SMTP host to MailKite for transactional email, or run both side by side.
smtp-config
# MailKite as a Brevo replacement or complement
# Same SMTP pattern, different infrastructure
SMTP Host: smtp.mailkite.dev
SMTP Port: 587
SMTP Username: mailkite
SMTP Password: mk_live_...
From: hello@yourdomain.com
# Or configure Brevo's SMTP alongside:
# Brevo SMTP: smtp-relay.brevo.com:587
# Use Brevo for marketing, MailKite for transactional Receive inbound email (optional)
Forward inbound email to Brevo's webhook endpoint for marketing automation triggers.
handle-inbound.ts
// Receive inbound email → Brevo automation webhook
async function handleInbound(email) {
// Forward to Brevo's webhook for automation triggers
const res = await fetch(process.env.BREVO_WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(email),
});
return res.json();
} Test it
Send a test email via your app's SMTP config to verify the swap works.
terminal
# Test your SMTP connection
echo "Test" | swaks --to test@example.com --from hello@yourdomain.com \
--server smtp.mailkite.dev --port 587 \
--auth USER=mailkite --auth-password mk_live_... Troubleshooting
- Brevo's SMTP relay is
smtp-relay.brevo.com. If migrating, just swap the host — no code changes needed. - Brevo free tier has daily sending limits. MailKite's free tier includes unlimited domains.
- Check your Brevo API key under Settings → SMTP & API.
See the SMTP relay docs for the full connection reference, or all integrations for other platforms.