Tag
#tutorial
25 posts tagged “tutorial”.
- 3 min read
Mautic email deliverability: replace SMTP with the Symfony Mailer DSN transport
Mautic 5 runs on Symfony Mailer, not SwiftMailer — which means it can take a native mailkite+api:// DSN instead of generic SMTP. This tutorial covers the install, the DSN config, and why campaign-send errors are more useful than an SMTP rejection code.
- 15 min read
Email to Slack: threading, Block Kit limits, and the duplicate-post trap
Slack's own email-to-channel needs a paid plan, pins every message to one fixed channel, and can't thread. Wiring inbound email to Slack yourself is about 50 lines — but three things bite once real mail arrives: Slack rejects any header block over 150 characters, webhook retries post the same email twice, and Incoming Webhooks never return a message ts, so an email thread can never become a Slack thread. Here's the handler that survives all three, and the return path that lets your team reply to the customer from inside the Slack thread.
- 3 min read
Drupal email that works: replace PHP mail() with proper SMTP
Drupal uses PHP's mail() function by default — the same broken path that sinks WordPress email in spam. This tutorial shows how to install the SMTP Authentication module, configure it for MailKite's SMTP relay, and route all Drupal site email through your DKIM-signed domain. Password resets, contact forms, content notifications — all deliverable.
- 3 min read
HubSpot transactional email: route it through your own domain with MailKite
HubSpot's transactional email uses its own SMTP infrastructure — your emails come from HubSpot's domain, not yours. This tutorial shows how to switch to MailKite's SMTP relay so every transactional email is DKIM-signed from your domain, with full deliverability control and CRM activity logging for inbound replies.
- 3 min read
Laravel email configuration: two lines that determine inbox or spam
Laravel's mail config is two environment variables. But those two lines determine whether your transactional email lands in the inbox or spam folder. This tutorial shows how to configure Laravel to send through MailKite's SMTP relay: .env setup, Mailable classes, queue configuration, and inbound webhook handling.
- 3 min read
Build email automation in n8n that actually works
n8n's built-in email nodes use basic SMTP or IMAP polling — slow, unreliable, and no structured data. This tutorial shows how to connect n8n to MailKite for both sending (SMTP node with DKIM signing) and receiving (webhook trigger with clean JSON payload), so your email automation workflows fire in seconds, not minutes.
- 3 min read
Salesforce email relay: send from your own domain with MailKite
Salesforce's default email relay sends from its own infrastructure — your customers see Salesforce's DKIM signature, not yours. This tutorial shows how to configure Salesforce's Email Relay to use MailKite's SMTP server, so every outbound email is DKIM-signed from your domain, plus how to receive inbound email as Salesforce Cases.
- 4 min read
Take control of Shopify email: send order notifications from your own domain
Shopify owns your transactional email. You can't change the SMTP settings, you can't sign with your own DKIM key, and your order confirmations come from shopify.com. This tutorial shows how to send Shopify order emails through MailKite's SMTP relay — DKIM-signed from your domain, with full deliverability control.
- 4 min read
WooCommerce order emails: fix deliverability with MailKite SMTP
WooCommerce sends 12+ email types through WordPress's wp_mail() — and most store owners have no idea they're going to spam. This tutorial shows how to route every WooCommerce email through MailKite's SMTP relay: order confirmations, shipping notifications, refund emails, all DKIM-signed from your own domain.
- 4 min read
Fix WordPress email deliverability: replace PHP mail() with MailKite SMTP
WordPress uses PHP mail() by default — and most of it goes straight to spam. This tutorial shows how to route WordPress email through MailKite's SMTP relay in 10 minutes: password resets, contact form notifications, WooCommerce order emails, all DKIM-signed from your own domain.
- 3 min read
Zendesk email from your own brand, not Zendesk's
Zendesk sends support emails from its own mail servers — your customers see Zendesk's DKIM signature, not yours. This tutorial shows how to route Zendesk outbound through MailKite's SMTP relay, so every ticket notification, auto-reply, and agent response comes from your DKIM-signed domain. Plus: receive inbound replies and add them to tickets automatically.
- 3 min read
Turn inbound email into Zapier workflows — no code, no polling
Zapier's email triggers poll an inbox over IMAP — slow, flaky, and broken for high-volume. MailKite pushes inbound email to a Zapier webhook as clean JSON the moment it arrives. This tutorial shows how to set up the webhook trigger, connect it to 5,000+ apps, and build email automation that actually works in real time.
- 6 min read
Email parser API: parse inbound email to JSON with a webhook
An email parser API that turns inbound email into structured JSON — no templates, no IMAP, no MIME parsing. Point your MX at MailKite and get a signed webhook with the full message payload.
- 2 min read
Parse inbound email to JSON in Node.js
Receive email as a webhook in Node.js: set up MailKite, verify the HMAC signature, parse the JSON payload, and handle attachments. Complete tutorial with working Express code.
- 2 min read
Receive email as a webhook in Python
Build a Python webhook handler that receives inbound email from MailKite: Flask setup, HMAC signature verification, JSON payload parsing, and attachment handling. Complete tutorial.
- 7 min read
Email to webhook: the complete guide to receiving email as JSON
Point your domain's MX at MailKite and every message becomes a signed JSON POST to your endpoint — no mail server, no IMAP polling, no MIME parsing. The full payload shape, signature verification, working receivers in Node, Python, Go, and PHP, and how it compares to SendGrid Inbound Parse, Mailgun Routes, and Postmark.
- 9 min read
Programmable email: send and receive mail from code (run it in your browser)
Programmable email means driving mail entirely from code — send with one API call, receive every message as JSON on a webhook, and give any app or agent its own inbox. Here's a live demo you can run right now: verify your email and send yourself a real, parsed message in about ten seconds, no signup form.
- 15 min read
I wrote the same email parser three times, and the hard part was making them fail identically
@mailkite/mail-parse parses MIME in Node, Python, and Go. Getting all three to parse a good email the same way is the easy part; getting them to break the same way on the same malformed one, and emit a byte-identical FNV-1a fingerprint when they do, is the real work. How we proved it, with two lessons that transfer to any polyglot library.
- 15 min read
Give your AI agent its own email inbox
Give an AI agent a real, scoped address on a domain you control. Inbound mail arrives as parsed JSON to an event.received loop and the agent replies over the Send API, or MailKite runs the agent for you on a route with action: agent. Working code, the security caveat, and the honest DIY alternatives.
- 12 min read
Build a support inbox in Next.js (email in, tickets out)
Point support@yourdomain at MailKite, parse the inbound email to JSON, and POST it to a Next.js App Router Route Handler. Verify the signature against the raw body, create a ticket, and auto-reply. The whole loop, in working code.
- 14 min read
Cloudflare Email Routing can't reply: how to send from your domain
Cloudflare Email Routing forwards inbound mail and Email Workers hand your code the raw MIME, but there's no first-class reply-from-your-domain path: that takes Routing plus a Worker that parses MIME plus the separate Email Service beta. Where the gap is, the DIY assembly on Cloudflare with real code, and how MailKite (which we build) closes the loop: parsed JSON in, one send call out.
- 14 min read
Handling email attachments without losing the £ sign
Received email attachments arrive as inline base64 that bloats every webhook, and a charset mismatch turns £ into £. Here's why it happens, how SendGrid Inbound Parse, Cloudflare Email Routing, and self-hosting each leave the decode to you, and what a parsed attachments[] array of signed URLs looks like instead, with runnable Node code.
- 14 min read
How to verify inbound email webhooks (HMAC signatures)
An unverified webhook endpoint is an open door: anyone can POST a fake email.received event. How to verify the HMAC signature with one SDK call in Node, Python, and Go, why the raw body bytes matter, and the hand-rolled check if you can't take a dependency.
- 15 min read
Reply-by-email: handling inbound replies in your app
When users reply to your notification emails, capture the reply, thread it to the right conversation with threadId, and respond: either an inline ack or a real outbound message. Working Node code, honest DIY path.
- 14 min read
Receiving email is the part nobody warns you about
Sending email is a solved problem. Receiving it, turning real-world MIME into something your app can use, is where everyone quietly loses a week. Why inbound is the hard direction, how each option punts, and what one clean webhook looks like instead.