在电子邮件中使用 text/markdown

在电子邮件中使用 text/markdown

Content-Type: text/markdown; charset=UTF-8;如果我开始按照 RFC发送单部分电子邮件,收件人是否会遇到任何问题77637764?我相信它应该可以安全地恢复到默认设置text/plain


电子邮件客户端可以通过多种方式支持 Markdown/Commonmark 或相关语言.我说的是传播以及由此产生的展示这里。

输入

  • 将用户使用键盘输入的星号、下划线等转换为 HTML 标签(或理论上任何其他富文本格式),并使用text/plain和将电子邮件作为多部分消息发送text/html
  • 与上文类似,但也提供 GUI 按钮或键盘快捷键(例如foo+ CtrlI_foo_)来帮助输入这些格式。这基本上是一个富文本编辑器,可以生成比目前大多数编辑器更好的纯文本回退。

这两者都可以使用无、内联、并排或提交前的渲染文本预览。

这就是插件的作用Markdown在这里可以做到,并且一些(网络)邮件客户端本身支持,例如航空邮件邮件伙伴邮件弹簧格梅利乌斯赛普特. 一些时事通讯、管理、或者自己发送电子邮件的商店系统也可以通过这种方式处理 markdown 输入。

传播

  • 发送单部分消息而text/markdown不是标准消息text/plain,依靠优雅地回退到后者。这就是我要问的!
  • text/markdown使用而不是 来发送多部分消息text/html,基本上复制text/plain消息正文。
  • 发送生成的多部分消息text/html,而text/markdown不是通常的text/plain基本版本。

邮件伙伴Groups.io可以添加这样的标头参数:

Content-Type: text/plain; format=flowed; markup=markdown

展示

  • 将收到的具有相应text/markdown标题设置为纯文本的单部分邮件显示出来,就像 一样text/plain这是预期的优雅回退。
  • 将收到的具有使用类型或参数Content-Type设置的标题的单部分或多部分邮件显示为删除了格式字符的富文本。text/markdownmarkup=markdown
  • 显示收到的单部分邮件,这些邮件通过一些启发式方法来确定它们是根据 Markdown 或其他语言编写的低密度脂蛋白约定为富文本,格式字符可能会被保留。

许多客户端,例如 Apple Mail,支持单个 Markdown 功能的富文本渲染:在行>首带有(可能嵌套)的块引用。

答案1

Markdown 已经以各种方式和风格实现了 Markdown。维基百科列出了 Standard、CommonMark、GFM 和 Markdown Extra,但即使是同一标准的每种实现也可能对同一 Markdown 文本产生不同的结果(例子)。

尽管有新的 RFC,但电子邮件并没有官方的标准类型,但text/markdown似乎是最常见的事实上的类型。大多数浏览器和其他相当复杂的客户端可能会看到该text/部分并默认使用 text/plain,因此与电子邮件相比没有太大区别。

如果你看一下 Markdown 实现列表,你会发现其中甚至没有包含一个电子邮件客户端或服务器。

有些网站会将你的 markdown 转换为 HTML 并为你发送电子邮件,例如商业格梅利乌斯,而且 PHP 也有一些 markdown 模块,但是转换器可能是你最期待的。

根据@grawity的评论,在他测试的电子邮件客户端中,只有Thunderbird将其作为原始数据传递以进行显示。其他客户端只是将Markdown放在附件中。这意味着只有Thunderbird关注text/Content-Type中的部分,而其他客户端只处理整个MIME规范,而这对他们来说是未知的,因为他们不了解Markdown。

就目前情况而言,我并不认为使用 Markdown 是个好主意,因为 Markdown 整合的浪潮尚未波及电子邮件客户端,而且可能永远不会波及。无论如何,根据w3.org 上面的链接,没有电子邮件客户端可以正确处理它,所以真的没有意义。

答案2

如果邮件必须是单部分,那么它就不能回退到 text/plain,因为只有 markdown 部分。您将完全依赖收件人邮件客户端的 markdown 支持。对于包含 text/markdown 和 text/plain 的多部分消息,我猜它可能会起作用。你真的试过这个吗?

我不确定目前邮件客户端对 Markdown 的支持情况如何,但我直觉认为它还没有被广泛接受。除了这个相当旧的页面,我真的什么也找不到。

我刚刚尝试在 Outlook 中打开此消息(保存为文件.eml);它显示为带有文本附件的空消息:

From: John Doe <[email protected]>
MIME-Version: 1.0
Content-Type: text/markdown

# this is the body text

相关内容