preview_email
Preview Email
Full email compatibility preview , transforms HTML for 21 email clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.
html必填formatclientstargetingPolicy
io.github.emailens由 GitHub 帳號 emailens 發布v0.15.0更新於 Oct 29, 2026
Analyze, audit, fix and diff HTML, MJML, Maizzle and React Email across 21 email clients.
在 21 種郵件用戶端上分析、稽核、修正與比對 HTML、MJML、Maizzle 與 React Email 範本,可選截圖與分享連結。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.emailens%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"emailens": {
"type": "http",
"url": "https://emailens.dev/api/mcp"
}
}
}Email rendering analysis for AI assistants
[CI] [npm] [license] [MCP Registry] [Smithery] [GitHub stars]
MCP server for email compatibility analysis. Analyze, preview, diff, and fix emails across 21 email clients, plus capture real screenshots and create shareable links with an optional API key.
Send HTML, MJML, Maizzle or React Email. Set format and the template is compiled before analysis, so what gets checked is the HTML your readers actually receive.
Why your assistant needs this: across the 298 CSS and HTML features we track, only 6 are fully supported in every major email client (see the data). Ask Claude to check your email before you send it.
Built on @emailens/engine. Also available as a GitHub Action.
Add to claude_desktop_config.json:
Get your free API key at app.emailens.dev/dashboard/api.
Use the hosted endpoint: no npm or Node.js needed. API key required.
preview_emailFull email compatibility preview: transforms HTML for 21 clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.
analyze_emailQuick CSS compatibility analysis; returns per-client scores and one finding per problem. Faster than audit_email when you only need CSS compatibility.
One finding per problem, not one per client. The engine reports per client
because a score is per client, and per selector because a fix is per selector.
On an ordinary newsletter border-radius arrives twelve times (two clients
that drop it, six selectors that use it) with the same sentence in every copy.
That was 286KB of JSON, about 73,000 tokens, for an 11KB email.
Findings group by property, severity and message, listing the clients affected, with positions merged across all of them. The same email now returns 40KB.
Fix snippets are not included; they were 93KB of that 286KB, and fix_email
produces them for the issues you decide to act on. hasFix tells you one is
available; fixType tells you whether the repair is markup or CSS.
Pass detail: "full" for the engine's per-client shape with snippets, and
clients: ["gmail-web", "outlook-windows"] to report only what you care about:
the fastest further saving, roughly halving the response for two clients.
Scores stay whole-email either way: narrowing the report does not change what
the email is worth elsewhere. An unknown client ID is rejected by name; an
empty result would read as "this email is fine for that client".
Source positions. For HTML input, every warning carries loc (line,
column, offset, length) for the first occurrence, plus alsoAtLines for
any others, so an assistant can edit the exact source and knows where the rest
are. audit_email positions its other findings the same way.
Later occurrences are line numbers rather than full positions on purpose: this response is read by a model paying for every token, and a real newsletter can produce over a thousand occurrences; carrying them all in full nearly doubles the payload.
Positions are reported for html input only. JSX, MJML and Maizzle are compiled
before analysis, so a line number would point into generated output rather than
the file you have open: the tools omit it instead of returning one that looks
authoritative.
audit_emailComprehensive quality audit: CSS compatibility, spam scoring, link validation, accessibility, images, inbox preview, size (Gmail clipping), template variables, content overflow, visual bugs, dark-mode and mobile text contrast, design consistency, and client targeting.
The last three cover what a light desktop preview cannot show: text that disappears when a client forces dark mode or when the email's own dark block repaints a surface without re-colouring the text on it, contrast below the email's breakpoint, and colours that differ by value but not to a reader.
Fix error and warning findings. info findings are not problems: the email falls back safely there, so never remove responsive (@media) or dark-mode CSS to clear them.
fix_emailGenerate a structured fix prompt for compatibility issues. Returns markdown with fix instructions that the AI can apply directly.
list_clientsList all 21 supported email clients with IDs, names, engines, and dark mode support.
diff_emailsCompare two email HTML versions; shows score changes, fixed issues, and introduced issues per client.
check_deliverabilityCheck email deliverability for a domain: SPF, DKIM, DMARC, MX, BIMI records with a score and actionable issues.
EMAILENS_API_KEY)capture_screenshotsCapture real email screenshots across 21 clients in real browsers. Screenshots are hosted on CDN.
Free plan: 30 previews/day. Sign up
share_previewCreate a shareable link. Recipients see the full analysis without an account.
Requires Dev plan ($9/mo). Share links expire after 7 days (Dev) or never (Pro).
format accepts html (the default), mjml, maizzle and jsx (React
Email). maizzle is an HTML template or a Vue single-file component. A pasted
Vue file with no format is compiled as maizzle. Anything but html is
compiled before analysis and also decides the syntax the fix snippets come back in.
Compiling matters more than it sounds. An email client renders the output, so
that is what has to be checked: handed a raw <mjml> document, an HTML parser
finds no CSS in it and reports a perfectly clean email. An answer like that is
worse than an error, because an assistant will repeat it.
The compilers are not bundled. MJML alone pulls 56MB, and this server is
usually started with npx, so the engine keeps them as optional peer
dependencies:
They have to be installed where the server runs, which is not always somewhere
you control. If it is not, compile the template yourself and send the resulting
HTML with format: "html": the tools say so when they hit this.
Each client links to its CSS support page. Setup guides for every assistant: emailens.dev/mcp.
Two publishes: npm, and the MCP registry. The registry listing sat five
releases behind because nothing pushed server.json, so that half is a
workflow now. RELEASING.md has the details and the four
places the version has to agree.
MIT
If this saved you from an Outlook surprise, a star helps other email developers find it.
來源:README.md,提交 ac3926f
Preview Email
Full email compatibility preview , transforms HTML for 21 email clients, analyzes CSS, generates scores, simulates dark mode, checks inbox preview and email size.
html必填formatclientstargetingPolicyAnalyze Email
Fix error and warning findings. Info findings are not problems (the email falls back safely there): never remove responsive (@media) or dark-mode CSS to clear them. Quick CSS compatibility analysis, returns per-client scores and one finding per problem, listing the clients it affects. For HTML input each finding carries loc (line, column, offset) and alsoAtLines, so you can edit the exact source. Narrow with clients, or pass detail:'full' for the per-client breakdown with fix snippets. Use audit_email for a full quality report (spam, links, a11y, images, etc.).
html必填detailformatclientstargetingPolicyAudit Email
Fix error and warning findings, and restore anything listed in designRemovals. Info findings are not problems (the email falls back safely there): never remove responsive (@media), dark-mode CSS or rounded corners to clear them. designRemovals compares this version with the first one audited for the same email (or with previousHtml): design the edits deleted, such as @media rules, dark mode, corners, gradients, VML fallbacks or images. Comprehensive email quality audit: CSS compatibility, spam scoring, link validation, accessibility, images, inbox preview, size (Gmail clipping), template variables, content overflow, visual fallbacks, dark-mode and mobile text contrast, design consistency, structural faults in Outlook-only VML, style survival (CSS a client parses and then discards, such as a stylesheet past Gmail's 16 KB ceiling or every rule after a `}}`), and client targeting (HowToTarget hacks such as Gmail u+.body or MSO conditionals). For HTML input, findings tied to a specific element carry loc (line, column, offset). Compatibility is collapsed to one finding per problem listing the clients it affects; pass detail:'full' for the per-client breakdown with fix snippets. Use skip to omit checks, targetingPolicy to change how targeted scopes affect scores, and clients to narrow which clients are reported.
html必填skipdetailformatclientsemailTypepreviousHtmltargetingPolicyFix Email
Generate a structured fix prompt for email compatibility issues.
html必填scopeformatselectedClientIdList Email Clients
List all 21 supported email clients with IDs, names, rendering engines, dark mode support, and deprecation status. Use the returned IDs to filter other tools like preview_email or capture_screenshots.
無需輸入參數。
Diff Emails
Compare two email HTML versions , shows score changes, fixed issues, and regressions per client.
after必填before必填formatCapture Screenshots
Capture real email screenshots across 21 clients (Gmail, Outlook, Apple Mail, etc.) with light and dark mode variants. Screenshots are rendered in real browsers and hosted on CDN.
html必填modestitleformatclientsShare Preview
Create a shareable link for an email preview. Recipients see the full analysis without needing an account. Requires the Dev plan or above.
html必填titleformatCheck Deliverability
Check email deliverability for a domain , SPF, DKIM, DMARC, MX, BIMI.
domain必填Build Email
Generate a cross-client-compatible email from a brief using Emailens's self-healing loop (generate → score across 21 clients → repair). Output stays in the framework you choose. Returns a runId immediately , poll get_build_status for progress and the final code. Requires a Pro/Team API key.
formatintent必填seedHtmlthresholdmaxIterationsGet Build Status
Check a build_email run by runId , returns status, iteration, best compatibility score, and the current best source once available.
runId必填Get Sandbox Inbox
Retrieve or auto-create your Emailens sandbox test email address for capturing test emails.
nameList Sandbox Messages
List recently captured test emails in the Emailens sandbox.
inboxIdWait for Sandbox Email
Poll and wait for a matching incoming test email in the sandbox (ideal for auth OTPs, magic links, transactional email assertions).
senderinboxIdsubjecttimeoutSecondsGet Sandbox Message
Get complete email details: HTML/text body, parsed headers, spam score, SPF/DKIM/DMARC auth status, and validated links.
messageId必填已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
npx -y @emailens/mcp{ "mcpServers": { "emailens": { "command": "npx", "args": ["-y", "@emailens/mcp"] } }}claude mcp add emailens -- npx -y @emailens/mcp{ "mcpServers": { "emailens": { "command": "npx", "args": ["-y", "@emailens/mcp"], "env": { "EMAILENS_API_KEY": "ek_live_..." } } }}{ "mcpServers": { "emailens": { "url": "https://app.emailens.dev/api/mcp", "headers": { "Authorization": "Bearer ek_live_..." } } }}{ "property": "border-radius", "severity": "warning", "clients": ["outlook-windows", "outlook-windows-legacy"], "message": "Does not support \"border-radius\". Round corners can be used in VML…", "fixType": "structural", "hasFix": true, "loc": { "line": 61, "column": 28, "offset": 2753, "length": 171 }, "alsoAtLines": [62, 64, 75, 78, 87]}{ "property": "border-radius", "loc": { "line": 7, "column": 8, "offset": 142, "length": 25 }, "alsoAtLines": [12, 19]}npm install mjml # MJMLnpm install @maizzle/framework@5 # Maizzle HTMLnpm install @maizzle/framework@6 # Maizzle Vue single-file componentsnpm install sucrase react @react-email/components @react-email/render # React Emailbun installbun run buildbun testbun run typecheck