Microsoft 365 + MailKite
Microsoft 365 (Exchange Online) is the enterprise email standard. Use MailKite alongside M365 — MailKite for transactional email and inbound parsing, M365 for employee mailboxes.
What you need
- A verified domain with SPF + DKIM published
- Your API key (
mk_live_…) - Microsoft 365 tenant
Send email
Use MailKite SMTP for transactional email. Keep M365 for employee mailboxes.
smtp-config
# Use MailKite for transactional, M365 for employee mail
# Configure SMTP relay in M365 or use MailKite directly
# MailKite SMTP (simpler):
SMTP Host: smtp.mailkite.dev
SMTP Port: 587
SMTP Username: mailkite
SMTP Password: mk_live_...
From: noreply@yourdomain.com
# M365 SMTP AUTH (for reference):
# SMTP Host: smtp.office365.com
# Port: 587 (STARTTLS)
# Requires SMTP AUTH enabled per mailbox Receive inbound email (optional)
Route specific addresses (support@, billing@) to MailKite for parsing. Keep employee mail in Exchange Online.
inbound-routing
# MailKite inbound webhook for M365 routing
# Forward specific addresses to MailKite for parsing
# Keep employee mail in Exchange Online
# Configure DNS MX to point at MailKite
# for addresses you want to parse (e.g., support@, billing@) Test it
Send via MailKite SMTP or API.
terminal
# Quick test
echo "Test" | swaks --to test@example.com --from noreply@yourdomain.com \
--server smtp.mailkite.dev --port 587 \
--auth USER=mailkite --auth-password mk_live_... Troubleshooting
- M365 SMTP AUTH requires admin enablement per mailbox — a common friction point.
- MailKite has no such restriction — one API key, all addresses.
- Use DNS MX routing to split traffic: MailKite for support@, M365 for employee addresses.
See the SMTP relay docs for the full connection reference, or all integrations for other platforms.