원클릭으로
md-to-eml
Convert Markdown to RFC 5322 email (.eml) with inline CSS and CID images
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Convert Markdown to RFC 5322 email (.eml) with inline CSS and CID images
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Build applications powered by GitHub Copilot using the Copilot SDK — session management, custom tools, streaming, hooks, MCP servers, BYOK, deployment patterns
CI/CD pipelines, infrastructure as code, and deployment automation for Azure workloads
Domain: DevOps & Cloud Engineering
Convert Word documents (.docx) to clean Markdown with image extraction and pandoc cleanup
Convert Markdown to EPUB 3 e-books via Pandoc.
Convert Markdown to standalone HTML pages with embedded CSS, images, and Mermaid diagrams
| type | skill |
| lifecycle | stable |
| inheritance | inheritable |
| name | md-to-eml |
| description | Convert Markdown to RFC 5322 email (.eml) with inline CSS and CID images |
| tier | standard |
| applyTo | **/*eml* |
| currency | "2026-04-22T00:00:00.000Z" |
| lastReviewed | "2026-04-30T00:00:00.000Z" |
Write in Markdown, send as professional email — works in any email client
Staleness Watch: See EXTERNAL-API-REGISTRY.md for source URLs and recheck cadence
Convert Markdown documents with YAML frontmatter into RFC 5322-compliant .eml files ready for governance, newsletter, and stakeholder communication workflows.
| Format | Status | Notes |
|---|---|---|
| Headings | ✅ | H1-H6 with inline styles |
| Bold/Italic | ✅ | Standard emphasis |
| Links | ✅ | Clickable hyperlinks |
| Images | ✅ | CID embedded as attachments |
| Code blocks | ✅ | Monospace, gray background |
| Inline code | ✅ | Highlighted |
| Tables | ✅ | HTML tables with borders |
| Blockquotes | ✅ | Indented with border |
| Lists | ✅ | Ordered and unordered |
| Mermaid diagrams | ⚠️ | Table fallback (no JS in email) |
| Emoji | ✅ | Unicode preserved |
| Horizontal rules | ✅ | Styled dividers |
| Feature | Details |
|---|---|
| YAML frontmatter | Maps to RFC 5322 headers (To, From, Subject, CC, Reply-To) |
| Email-safe HTML | Inline CSS with table-based layout (no <style> blocks) |
| Mermaid fallback | Diagrams converted to ASCII table representation (email-safe) |
| CID images | Local images embedded as base64 multipart MIME attachments |
| Emoji preservation | Subject and body emoji render correctly across clients |
| Test mode | --test flag overrides recipients for safe preview |
# Basic conversion
node .github/muscles/md-to-eml.cjs newsletter.md
# With test recipient override (safe preview)
node .github/muscles/md-to-eml.cjs newsletter.md --test --test-to me@example.com
# Embed images as CID attachments
node .github/muscles/md-to-eml.cjs update.md --inline-images
# Debug mode (saves intermediate HTML)
node .github/muscles/md-to-eml.cjs update.md --debug
| Option | Default | Description |
|---|---|---|
--test | off | Override recipients for safe preview |
--test-to ADDRESS | frontmatter from | Custom test recipient email |
--inline-images | off | Embed images as base64 CID attachments |
--debug | off | Save intermediate HTML for inspection |
The YAML frontmatter maps directly to RFC 5322 email headers:
---
to: team@example.com
from: sender@example.com
subject: 📊 Weekly Update - Sprint 42
cc: manager@example.com
reply-to: noreply@example.com
---
| Field | RFC 5322 Header | Required | Notes |
|---|---|---|---|
to | To | ✅ | Primary recipient(s), comma-separated |
from | From | ✅ | Sender address |
subject | Subject | ✅ | Supports emoji |
cc | Cc | ❌ | Carbon copy recipients |
reply-to | Reply-To | ❌ | Reply address if different from From |
| Client | HTML | Images | Tables | Emoji |
|---|---|---|---|---|
| Outlook (Windows) | ✅ | ✅ CID | ✅ | ✅ |
| Outlook (Mac) | ✅ | ✅ CID | ✅ | ✅ |
| Gmail (Web) | ✅ | ✅ CID | ✅ | ✅ |
| Apple Mail | ✅ | ✅ CID | ✅ | ✅ |
| Thunderbird | ✅ | ✅ CID | ✅ | ✅ |
| Mobile (iOS/Android) | ✅ | ⚠️ varies | ✅ | ✅ |
--test --test-to your@email.com--test for productionEmail clients cannot execute JavaScript, so Mermaid diagrams are converted to text-based table representations:
┌─────────────────┐
│ Original Mermaid │ → Table Fallback
└─────────────────┘
flowchart LR → | Step | Description |
A --> B | A | Start |
B --> C | B | Process |
| C | End |
For high-fidelity diagrams, pre-render to PNG and include as images.
| Problem | Cause | Solution |
|---|---|---|
| "pandoc not found" | pandoc not installed | winget install pandoc |
| Images not showing | CID not supported | Use --inline-images flag |
| Formatting broken | Client strips styles | Use simpler formatting |
| Large file size | Too many images | Link images instead of embedding |
| Subject truncated | Too long | Keep under 60 characters |
| Emoji not showing | Old email client | Use text alternatives |
markdown-preprocessor.cjs, mermaid-pipeline.cjs.github/muscles/md-to-eml.cjs (v1.0.0)
| Condition | Verdict | Action |
|---|---|---|
| Subject, From, To headers present and correct | Accept | Required fields for valid .eml |
| Missing or malformed email headers | Reject | Check frontmatter extraction |
| HTML body renders in Outlook/Gmail preview | Accept | Test in at least one client |
| Body shows raw HTML tags or broken layout | Reject | Check MIME Content-Type is text/html |
| Inline images display (CID or base64) | Accept | Verify no external URL references |
| Images missing or show broken icons | Reject | Embed as base64 or CID attachment |
| Links are clickable and point to correct URLs | Accept | Spot-check 2-3 links |
| Mermaid diagrams pre-rendered as inline images | Accept | Raw mermaid syntax is not email-safe |
| Mermaid diagrams show as code blocks | Reject | Pre-render to PNG before embedding |
| File opens in default mail client without errors | Accept | Test .eml file import |
| Total .eml size >5MB | Warning | Compress images or link instead of embed |
| Plain-text MIME part included as fallback | Accept | Recommended for accessibility |
Skill version: 2.0.0 | Last updated: 2026-04-14 | Category: document-conversion