9 ms·
Show HN: Email.md – Markdown to responsive, email-safe HTML
- vindin 6mo agoThis problem was solved almost 15 years ago
- jsxyzb9 6mo ago[flagged]
- alfanick 6mo ago"Write markdown. Ship emails." - I see a particular group of people interested in this, but they have their tools already.
- SunshineTheCat 6mo agoI think you should probably let that group of people speak for themselves. I'm in this "group" and see an immediate usefulness of this over what I'm doing now.
- Kwpolska 6mo agoThis appears to be a MJML wrapper with a Markdown→HTML converter attached to it. I think generating HTML from code is easier than generating Markdown, since there are many templating tools that understand HTML escaping. And writing HTML is not that hard, especially for your typical emails, so I'm not really sure if this library would be helpful in the long run.
- dallen33 6mo agoI like the idea of this tool, as writing Markdown for some people is probably easier than HTML. I mean, use whatever floats your boat. I like that this exists.
- j45 6mo agoAlso a way to use fewer standards for storage of input and created text.
- joshmoody24 6mo agoWriting HTML for emails is a lot harder than you're making it sound. But MJML does a good job of simplifying it for most use cases.
- koakuma-chan 6mo agoI wish people just sent plain text.
- XCSme 6mo agoWhat about images, links? Formatted text like bold or underline? I also prefer plain text, but in most of my emails I talk about technical stuff, or I send transactional emails that require actions, in which case showing buttons is a much better user experience than plain text.
- loloquwowndueo 6mo agoI don’t want buttons in my emails.
- XCSme 6mo agoBut they are a lot easier to see and click (accessibility, larger hit area). You could have a larger text instead of a button, but changing font size is also HTML and not plain-text anymore.
- koakuma-chan 6mo agoYou can just send a link, and the user's client will probably highlight it even if it is plain text.
- recursivegirth 6mo agoYea, but how will they hide all the tracking URLs and base64 encoded PII from you in the email?
- koakuma-chan 6mo agoUsing a URL shortener obviously. But you are right, if they only send plain text, they won't be able to include those 1x1 images at the bottom to track whether you have opened the email. Any sane email client blocks images by default, but whatever.
- KhushaliT 6mo agotemplates are cool but seems too heavy to land in primary inbox
- joshmoody24 6mo agoWhat do you mean by "too heavy"? File size?
- pembrook 6mo agoI like how you aren't hiding the fact this is MJML under the hood and don't layer complex abstractions over MJML spec like similar projects (cough react email cough). The devs maintaining MJML deserve so much credit for dealing with Gmail/Outlook's monopoly bullshit and 2007 html. Nice idea for those who manage content in markdown. I've moved away from putting emails in my codebase, but seems great for founders moving fast.
- dancablam 6mo agoThanks! I agree - the MJML team has laid so much groundwork and it frankly made this project possible.
- r1290 6mo agoWhat’s your opinion on react email?
- pembrook 6mo agoMostly fluff/hype. Not a value-add over just using raw MJML (which has nice VScode plugins for live previews), and in fact a long term risk to add to a codebase since react-email is just a marketing play by Resend (a startup) and will not be maintained as diligently as MJML. Also, LLMs know MJML really well.
- joshmoody24 6mo agoThis is my experience as well. MJML is the older, more reliable, better documented technology. And when it comes to debugging email rendering, you really, REALLY want as much documentation as possible.
- sy0115 6mo ago[dead]
- binaryturtle 6mo agoAny "HTML emails" get filtered straight into the spam folder here. I think I'm not part of the target audience here.
- Lord_Zero 6mo agoIs that a thing? Is it safer to use plain text emails?
- mghackerlady 6mo agoVery much so. While a lot of mail clients block images, they can be used to track you. Hell a lot of HTML can be used to track you if you're smart about it
- unmole 6mo ago> Is that a thing? There must be literally dozens of people who do this.
- SergeAx 6mo agoHow do you deal with things like "we sent you a one-time code to confirm your login"? Most of those are HTML-formatted today
- binaryturtle 6mo agoI still can check the SPAM folder, if needed. But most SPAMs are HTML, so you'll have a good default last-stage in-client filtering in place in case some SPAM actually makes it through the other setup on the server (greylisting, DNS based filtering lists, policy-based filtering, etc.) :)
- ph4rsikal 6mo agoMarkdown is the secret winner of the AI early years.
- hatmatrix 6mo agocries in org-mode
- terminalgravity 6mo agoI feel you on this too.
- phyzix5761 6mo agoorg-mode is amazing for humans. I, as a real human and not a robot, use it every day.
- austinjp 6mo agoI'm not so sure. It's definitely the de facto standard, but I suspect minimal HTML is better. Just enough tags to add structure and meaning (H1-H6, p, a, em, section for structure including nesting, maybe more). LLMs were trained on a lot of HTML, they're good at processing it. HTML requires more tokens than markdown but I believe it's worth it. I'll find out in a few weeks as I experiment with both.
- ossianericson 6mo ago[dead]
- theanonymousone 6mo agoI hope .md domains do not become a security hole as Markdown raises in popularity...
- Imustaskforhelp 6mo agoThis reminds me of the infamous dot zip domain and the security chaos that had followed.
- brian93512 6mo agoThat's a valid concern, especially given the confusion we saw with .zip or .mov TLDs. But from a security engineering perspective, the bigger 'Markdown hole' I worry about is injection. When we render untrusted AI output into HTML for email, the sanitization pipeline becomes critical. I'd be curious to see how this library handles potential XSS vectors during the MD-to-HTML conversion.
- deleted 6mo ago[deleted]
- T3RMINATED 6mo ago[dead]
- Igor_Wiwi 6mo agoI am working on smth similar markdown reader for humans, not agents - https://mdview.io https://mdview.io
- matzalazar 6mo agoGreat project! And if you don't mind a little workaround and some Python scripting, you can turn a regular Obsidian folder into an automatic outbox. Write markdown, drag, drop, and ship.
- safehuss 6mo agoAnything that makes email development easier is great I guess, but have personally found MJML great for solving the issues you'd run into, and not sure I want yet another abstraction layer on top of that which makes it more limited...
- seer 6mo agoThey address this in the docs - it is meant to make authoring the content easier for LLMs since that is easy for them to write. It still uses MJML for the actual templates, but it is a translation layer between markdown and the template itself. If you need to author a lot of emails with LLM this does seem like it would be a great fit.
- vanillameow 6mo agoIf you need to author a lot of emails with LLM you should be rethinking your business strategy tbh
- safehuss 6mo agoIf the goal is to write emails purely using AI, then it is trivial to attach the MJML documentation as context to your LLM using context7 MCP or something of the sort. It's not a very complex language and its documentation is not large at all. That's assuming the crawlers haven't ingested it all already...
- devnotes77 6mo ago[dead]
- deleted 6mo ago[deleted]
- deanputney 6mo agoCurious why the CLI function is `mvd` instead of `mdv`?
- dancablam 6mo agoWhat CLI function?
- articsputnik 6mo agoLove everything to Markdownify :) I was just wondering, is there a Neovim/Markdown email client? Potentially using something like this? I love Neomutt, or Newsboat, and other TUIs. It would be great to have something totally on Markdown. Update: I gave it a spin [1] with Go and some of my favorite CLI's. [1] https://x.com/sspaeti/status/2036539855182627169 https://x.com/sspaeti/status/2036539855182627169
- dancablam 6mo agoThere's not one that I'm aware of. Maybe it's about time there is :D
- articsputnik 6mo agoI gave Claude a spin, given all my likings ;) https://github.com/ssp-data/neomd https://github.com/ssp-data/neomd
- rbbydotdev 6mo agoNice usage of admonitions. This is a great example of how eloquent markdown can be. Still very readable while even including the markup for 'footer' and the call out code.
- gojomo 6mo agoWhich email client will stylize raw markdown itself, making the HTML step here superfluous?
- Avamander 6mo agoIt would first require a standard for Markdown. After that there would be very little stopping anyone from implementing it. I guess a MIME type for standard Markdown would also be nice. Pretty sure I've said it before, but it would be a nice middle ground between text and all the complexity HTML+CSS brings in (if you want to compete with other HTML clients).
- SoftTalker 6mo agoThe idea of Markdown was that it was supposed to be readable in plain text without any stylizing.
- johanvts 6mo agoEmacs ofc :) seriously it should not be too much work although org-mode syntax would be even easier, there is a markdown mode here: https://jblevins.org/projects/markdown-mode/ https://jblevins.org/projects/markdown-mode/ The email part is not something i have done myself but it has been a feature for a very long time and you can find plenty of guides online.
- Escapade5160 6mo agoAt this point markdown is going to be the foundation of the entire AI web. Someone the other day showed off Markdown as a responsive frontend protocol. Now we've got email. How long until we're writing classes in markdown? We can only abstract this so far before we confuse AI more than help it.
- whattheheckheck 6mo agoLook up Configuration Complexity clock
- Barbing 6mo agoVery nice. I think the kind of folks attracted to this thread might have some thoughts on a workflow I'm interested in. When I see a news article, I want to be able to click a button on my Mac or iPhone to send the text of the article in the body of the email. Bonus points for rehosting the images from the article. And using a similar font both without carrying over any of the original external dependencies. Normally it’s good to support the journalist but I cannot in good conscience send a link to elderly folks when this is so much safer.
- johanvts 6mo agoUse the browser reader mode, select all, right click send email. Is it something like that you want?
- Barbing 6mo agoThank you! Great trick that comes pretty close.
- Ringz 6mo agoIf only there was a faster way to „select all“!
- Barbing 6mo ago(if you’re down to experiment!) For the next three intriguing articles you see on arbitrary sites, does the select all trick produce an aesthetically pleasing email? Do external dependencies get carried over? Do you spend any time manually removing cruft? Does the formatting leave anything to be desired? When I do this all manually I can make it look great, and now that we’ve seen we can train computers to make stuff look great, it’s going to be a point of frustration for me until I have the one-click beautiful-article-email button.
- runtype 6mo agoWould love to use this - any plans for Cloudflare Workers support? Some of the node APIs you're using block it from working on Cloudflare right now.
- josegonzalez 6mo agoThis plus a block-based editor like editorjs would be a great addition to any custom cms.
- firefoxNX11 6mo ago[dead]
- Lord_Zero 6mo agoDoes anyone use MJML in golang? What package are you using?
- razvan_maftei 6mo agoI'm not exactly following as to who this is for - people are going to use email templates instead of writing Markdown emails, and agents can just as easily spit out HTML. Seems like your solution is in search of a problem.
- ksajadi 6mo agoThis is great! I’d love to see this supported in SendOps!
- kevinbaiv 6mo ago[flagged]
- mghackerlady 6mo agoOr, hear me out. Just send the markdown and skip the HTML bullshit. Any mail client will render markdown fine and the ones that don't either aren't worth using or don't want HTML mail in the first place. HTML email is the worst thing to ever happen to the internet
- hikaru_ai 6mo ago[dead]
- deknos 6mo agoi never understood why the markdown mime type was not used in emailclients in webclients or desktop programs... that would eliminate most html usage and enable longer texts than 70-85 characters per line.
- teddyh 6mo agoIt’s up to the e-mail client implementors, but I would personally prefer text/enriched, RFC 1896, instead of markdown.
- rsmtjohn 6mo ago[flagged]
- bpev 6mo agoI'm never seen the `::: header` or `{width="200"}` kind of syntax before. Is this custom or Frankenstein solution? Or is there some kind of md-extended pattern for defining components that has been gaining steam or smthn? Markdown tooling is always confusing, since everyone has their own standard.
- austinjp 6mo agoYep both are widely used. I forget which markdowns extensions they originated from. The Pandoc website probably has the details.
- phrotoma 6mo agoAye, I've seen these both in kramdown and quarto.
- rcarr 6mo agohttps://github.com/remarkjs/remark-directive https://github.com/remarkjs/remark-directive https://talk.commonmark.org/t/generic-directives-plugins-syntax/444 https://talk.commonmark.org/t/generic-directives-plugins-syn...
- rbbydotdev 6mo agoAdmonitions are :::, allows you do to do things like this, if you have custom parser, if not, your admonitions can fail gracefully as plain text :: gallery    ::
- annie511266728 6mo agoFeels more like a content layer for LLMs than a replacement for MJML. In my experience models tend to break HTML layouts pretty easily, while Markdown degrades more gracefully.
- austinjp 6mo agoIt uses MJML under the hood. https://mjml.io/ https://mjml.io/
- lexro_ai 6mo ago[flagged]
- dancablam 6mo agoIt uses MJML under the hood to ensure email-safe HTML is generated. That should prevent many edge cases where failures can happen - but I'm sure there are some skeletons we'll have to find / fix.
- deleted 6mo ago[deleted]
- AlphaTheGoat 6mo ago[flagged]
- dimaberlin 6mo agoThe real pain in email HTML isn't writing it — it's maintaining it. Markdown at least gives you something a human can edit 6 months later without crying.
- mitul005 6mo ago[flagged]
- creatonez 6mo agoI never actually thought about this. How are people making HTML emails so responsive? Email HTML is stuck in the IE6 era, right? So everything is just a horrible workaround with tables and ancient CSS?
- comchangs 6mo agoNice. The LLM authoring angle is underappreciated — getting an AI to write valid MJML is painful, but Markdown is trivial. One thing I'd love: a CLI mode so I can pipe it into deployment notification hooks. Something like `echo "Deploy succeeded" | emailmd | sendmail` would be killer for DevOps workflows.