好的,我将分别回应您提出的问题。我理解您将它们联系起来的原因,但希望您能明白它们是独立的问题。
纯文本电子邮件通知中的 HTML 实体
最好的做法是让电子邮件消息成为多部分消息,其中包含纯文本渲染的 Markdown
text/plain和单独的text/html
这实际上是 Discourse 电子邮件通知目前的工作方式。如果您查看 Discourse 电子邮件通知的“原始”邮件,您会看到文本版本和 HTML 版本。
您似乎在说的是,您在 Discourse 电子邮件通知的纯文本版本中收到了 HTML 实体,其结果是,当您在不支持 HTML 的电子邮件客户端中查看时,您会看到实际的 HTML 实体出现在电子邮件正文中。您是这个意思吗?您能否提供一个不支持 HTML 的电子邮件客户端中的屏幕截图?
如果是这种情况,这是 Discourse 电子邮件内容生成和格式化特有的问题,最好将其分离到一个更具针对性的主题中,例如 Support 或 #bug。
Discourse 帖子中的 HTML
您在这里提出了一个相关问题,但从技术角度来看,问题在于 Discourse 如何处理导入的内容。目前导入内容的默认格式是 HTML,而不是 Markdown。
您可以看到这种情况的其他上下文是 RSS Polling 插件,它与 WP Discourse 插件一样,将 HTML 导入到帖子内容中。另请注意,embed support markdown 站点设置默认关闭,以及所有其他处理帖子中嵌入 HTML 的站点设置(例如 allowed embed selectors)。
我在这里只是猜测,但 Discourse 在早期处理导入内容时做出这个战略决策的最可能原因可能是简单性和保真度的结合,即从 HTML 转换为 Markdown 永远是不完美的。这里有一个关键的例外,我将在下面提到。
WP Discourse 插件可以尝试在将 WordPress 帖子发送到 Discourse 之前将 HTML 转换为 Markdown。是的,存在现有的 PHP 库可以将 HTML 转换为 Markdown,但在转换标记语言时,这从来没有那么简单,特别是考虑到 Markdown 的不同风味。
事实上,WP Discourse 插件尝试处理转换实际上是错误的,因为 Discourse 中已经有一个自定义的 HtmlToMarkdown 转换器。目前,此转换器处理将 HTML 转换为 Discourse 中导入的电子邮件的 Markdown。如果将 WordPress 帖子的 HTML 转换为 Discourse Markdown,则需要由该转换器处理。
目前,WP Discourse 插件使用 Discourse API 来发布帖子,即 /posts 端点。所以,您实际上是在说,您希望将 HtmlToMarkdown 转换器支持添加到 Discourse 的 /posts 端点(即作为可选的查询参数)。您可以为此倡导,如果实施,WP Discourse 插件将采用它作为可选设置。