TL;DR

emailmd là thư viện TypeScript + CLI tool chuyển Markdown thành HTML email responsive, tương thích với Gmail, Outlook, Apple Mail và Yahoo Mail - không cần học MJML hay setup Tailwind pipeline. MIT license, miễn phí hoàn toàn.

emailmd - Markdown to email-safe HTML demo

Email HTML - nỗi đau thật sự

Ai từng tự viết HTML email đều biết cảm giác này: code xong trông ổn trên Chrome, nhưng mở Outlook thì vỡ toàn bộ. Gmail strip mất style. Apple Mail dark mode làm chữ biến màu.

Mỗi email client xử lý CSS theo cách riêng - Outlook dùng rendering engine của Word thay vì browser, Gmail không nhận <style> trong <head>, và danh sách quirk cứ dài mãi. Cộng đồng email developer gọi đây là HTMHELL.

Các giải pháp hiện có đều có đánh đổi: MJML yêu cầu học cú pháp XML riêng, React Email kéo theo toàn bộ React dependency, Maizzle cần cả Tailwind build pipeline. Với team nhỏ hoặc backend developer, chi phí setup không xứng đáng.

emailmd hoạt động thế nào

emailmd là tầng trừu tượng Markdown đặt lên trên MJML v5. Thay vì viết XML của MJML hay JSX của React Email, bạn viết Markdown bình thường - emailmd dịch sang MJML, MJML xử lý phần còn lại để ra HTML email cross-client.

Kiến trúc: monorepo Turbo, viết bằng TypeScript (89.8% codebase), chạy Node.js 20+. Hỗ trợ cả ESM và CommonJS. Ngoài Markdown chuẩn, emailmd mở rộng thêm directive syntax qua remark-directive - khai báo block đặc biệt như ::: header, ::: callout, ::: footer ngay trong file .md.

Cài và chạy trong 30 giây

npm install emailmd

JavaScript API:

import { render } from 'emailmd'

const { html, text } = await render(`
# Xác nhận email của bạn

Mã xác nhận:

::: callout compact
# ABC-123
:::
`)
// html → gửi làm text/html
// text → gửi kèm làm text/plain fallback

Lưu ý: từ v0.3.0, render() là async - phải dùng await.

CLI tool:

emailmd input.md -o output.html
emailmd input.md --text
cat input.md | emailmd

Bạn cũng có thể test trực tiếp tại emailmd.dev không cần cài gì.

Những gì emailmd hỗ trợ

  • Block đặc biệt: header, footer, callout, hero, highlight, button, centered block

  • Markdown chuẩn: tables, task lists, bold, italic, links, code blocks

  • Theming: light/dark mode, customization theo brand

  • Frontmatter: metadata per-email (preheader, theme, v.v.)

  • Template variables: {{name}}, {{company}} cho personalization

  • Plain text tự động: xuất HTML lẫn plain text trong một lần render()

  • AI-friendly docs: file /llms-full.txt để LLM consume trực tiếp

Sau launch, team còn bổ sung thêm Cloudflare Workers support theo phản hồi từ cộng đồng - cho thấy dự án đang active development.

So với MJML, React Email, Maizzle

Tool

Cú pháp

Dependency

Phù hợp cho

emailmd

Markdown + directives

Node.js 20+

Dev muốn đơn giản, LLM workflows

MJML

XML-like custom

Node.js

Control cao, team quen MJML

React Email

JSX/TSX

React + ecosystem

Full-stack React team

Maizzle

HTML + Tailwind

Tailwind build pipeline

Designer-heavy team

Điểm thú vị từ cộng đồng Hacker News: emailmd đặc biệt phù hợp cho LLM-generated email content. Markdown là output tự nhiên của language model, và Markdown bị lỗi nhỏ sẽ degrade gracefully hơn nhiều so với HTML bị lỗi. Khi để AI viết nội dung email, emailmd là bridge tự nhiên nhất từ AI output sang HTML email an toàn.

Nên dùng - và khi nào không

emailmd phù hợp nếu bạn:

  • Cần gửi transactional email (confirm account, OTP, password reset) từ Node.js app

  • Muốn template email đơn giản không cần designer

  • Đang build AI pipeline sinh nội dung email động

  • Không muốn học MJML hay kéo React vào chỉ để gửi vài loại email

Chưa nên dùng nếu cần layout phức tạp hoàn toàn custom, hoặc cần API ổn định cho production lớn - package vẫn pre-v1.0 và API có thể thay đổi giữa các minor version.

Cài đặt: npm install emailmd. MIT license. Docs tại emailmd.dev/docs. GitHub: github.com/unmta/emailmd.

Via: GitHub unmta/emailmd, emailmd.dev, Hacker News.