mattdm
(Matthew Miller)
1
我们已将 Wordpress 插件设置为将完整主题发布到我们论坛的公告类别。这效果相当不错,但 Discourse 发送的电子邮件被标记为 Content-Type: text/plain; charset=UTF-8。
据我所知,这在技术上是正确的,因为预期的格式是 Markdown,它在某种程度上是纯文本。但是,当然,Markdown 也包含“HTML 也是有效的,放手去做!”。
事实上,来自 Wordpress 的帖子是一堆 HTML。
其他人是如何处理这个问题的?有没有办法让发布到 Discourse 的帖子最终成为合理的人类可读的 Markdown?或者,有没有办法强制此类别生成的邮件使用 HTML 内容类型?或者……还有其他任何想法吗?谢谢!
2 个赞
angus
(Angus McLeod)
2
为了弄清楚@mattdm,当你说
你说的“消息”是指你从 Discourse 收到的关于你公告类别中新帖子的电子邮件通知吗?
我只是想了解你在这里试图解决的具体用户痛点。
mattdm
(Matthew Miller)
3
是的,抱歉。“邮件”指的是“电子邮件”。“它”指的是 Discourse,而不是 Wordpress 插件。我会编辑顶部的帖子来明确这一点。
mattdm
(Matthew Miller)
4
在我的想象中,最理想的情况是电子邮件消息是多部分的,其中包含一个纯文本渲染的 Markdown text/plain 和一个单独的 text/html。但我甚至不确定那会如何工作。
angus
(Angus McLeod)
5
抱歉,再说一遍,只是为了澄清,您提出这个问题是因为 Discourse 帖子(例如,您公告类别中链接到 Wordpress 帖子的帖子)的电子邮件通知中错误地包含 HTML 实体吗?如果是这样,您能分享一个例子吗?
我之所以坚持这一点,是因为 Discourse 中电子邮件通知的生成与任何与 Wordpress 插件相关的内容是完全分开的。电子邮件通知有自己的流程,并且有多种方法可以使 Discourse 帖子中出现 HTML 实体,而来自 Wordpress 的帖子只是其中一种。
换句话说,Discourse 帖子中存在 HTML 是一个与该帖子的电子邮件通知包含什么以及如何编码是不同的问题。了解您遇到的/提出的具体问题将有助于引起正确的关注。
mattdm
(Matthew Miller)
6
我可能误解了情况,但这是我的理解:
- WordPress 文章已发布。
- 插件响应此操作并创建一个 Discourse 帖子。
- Discourse 帖子都是 Markdown 格式,但碰巧来自 WordPress 的帖子是通过插件生成的 HTML 混乱(这在 Markdown 中是完全有效的)。
- 通过电子邮件订阅通知的用户会收到包含该文本的电子邮件——看起来像一团糟的 HTML。
我意识到有人可以 手动 以同样的方式创建带有大量 HTML 的 Discourse 帖子,但 实际上 这通常不是问题(如果成为问题,可以通过礼貌地请求“嘿,你能不能别这样?”来解决)。
希望这能说得通。
mattdm
(Matthew Miller)
7
一个例子:这个帖子
在 Discourse 中编辑帖子或发送时,它看起来像这样:
<small>最初发布于: https://communityblog.fedoraproject.org/cpe-hiring-a-software-engineer/
</small><br><p>社区平台工程组(简称 CPE)是 Red Hat 团队,负责 Fedora 和 CentOS 的 IT 和发布工程。我们目前有一个职位空缺,招聘一名 <a href="https://global-redhat.icims.com/jobs/96157/software-engineer/job?mobile=true&width=412&height=732&bga=true&needsRedirect=false&jan1offset=-480&jun1offset=-420">在印度的软件工程师</a>。</p>
<h2>关于职位</h2>
<p>我们正在 <a href="https://global-redhat.icims.com/jobs/96157/software-engineer/job?mobile=true&width=412&height=732&bga=true&needsRedirect=false&jan1offset=-480&jun1offset=-420">招聘新人才</a>,全职参与 Fedora 项目,主要作为我们发布工程团队的一员。您将有机会参与构建和发布 Fedora Linux 发布件和更新的基础设施。这个职位非常适合有发布工程经验或兴趣的人。</p>
<h2>关于 CPE</h2>
<p>我们的目标是保持核心服务器和服务的运行和维护,构建发布版本,并执行志愿者无法投入足够时间执行的其他战略任务。</p>
<p>有关更多信息,请参阅 <a href="https://docs.fedoraproject.org/en-US/cpe/">我们的文档</a>。我们期待与您见面,并希望很快与您合作!</p>
…这没什么用。
angus
(Angus McLeod)
8
好的,我将分别回应您提出的问题。我理解您将它们联系起来的原因,但希望您能明白它们是独立的问题。
纯文本电子邮件通知中的 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 插件将采用它作为可选设置。
1 个赞