被拒绝的邮件无法阅读

当我在自托管站点的 /admin/email-logs/rejected 中检查时,发现被拒绝的邮件正文如下所示:

正确的邮件正文以 UTF-8 中的 谢谢 开头(完整正文要长得多),而损坏的文本是 base64 中的 m6Mtyx7x7j+rjuVupyY=

数据库中的邮件已经是这种损坏状态。将其与邮件服务器上的邮件进行比较,我发现邮件被重写了,我怀疑是邮件清理模块(email cleaner module)弄乱了邮件。(但我对 Ruby 的知识不足,无法理解其独特的字符串编码特性。)

这些消息有可能来自 Exchange 服务器吗?:

2 个赞

不。它们来自腾讯和网易。原始邮件(我已将其保留在邮件服务器上以调查此问题)在使用 mutt 或 Ruby 的 Mail 库时都没有问题。

我最近收到一封来自 Exchange 服务器的退信,而它没有这个问题。

我明白了。Mailpart 具有正确的 charset 信息,但不知何故其 body 没有获取到该信息,并将字节视为 ASCII-8BIT

sed -i 's/part.body.decoded/part.body.decoded.force_encoding(part.charset || "utf-8")/' /var/www/discourse/lib/email/cleaner.rb
1 个赞

[quote=“lilydjwg, post:1, topic:392868”]数据库中的邮件已经是这种损坏状态了。
[/quote]

我最近通过以下方式解决了这个问题:

[quote=“lilydjwg, post:5, topic:392868”]Mailpart 具有正确的 charset 信息,但不知何故其 body 没有获取到这些信息,并将字节当作 ASCII-8BIT 处理。
[/quote]

您是否可以将这封邮件(假设它不是被 Discourse 弄乱的邮件)提供给我,以便我们进一步调查并可能将其用作测试用例?

1 个赞

我创建了一个精简版的邮件,应该可以在不包含任何私密信息的情况下展示问题(已在 irb 中检查过):

issuemail.txt (857 Bytes)

1 个赞

您所说的电子邮件(以及此示例)在更新到我链接的更改之后是否仍然存在问题?

不,它已经修复了。谢谢。

2 个赞