Email signature not being stripped out when user write new topic or reply to a topic

我刚刚使用 Gmail 地址并通过基于网页的 Gmail 应用发送了一条消息,其中包含的图片签名已成功被修剪。

然而,同一邮箱账户在 PC 上使用本地 Outlook 2016 应用发送消息时,其签名却未被移除(使用的是相同的签名图片,但在 Outlook 中设置)。

现实情况是,论坛中绝大多数用户将使用 Microsoft Outlook 应用,因此这必须作为修剪过程“成功”的基准。

是否只有来自 Outlook 2016 的一个邮件源在签名问题上给您带来麻烦,还是所有 Outlook 2016 邮件源都如此?

Outlook 2016 是否已知会插入难以修剪的内容?或者 Outlook 2016 可能未被视作应纳入 email_reply_trimmer 库的流行应用之一?

是否有人提出了解决此问题的策略?(除了要求用户在给论坛发邮件时记得关闭自动签名——我知道这会招致抱怨!)

我还注意到,Outlook 2016 邮件中的签名虽然未被修剪,但解析也不正确:在我的情况下,出现了文本格式和字体混乱、添加了几个额外字符,以及图片过度缩放的问题——或者这是修剪失败的结果?

是一个 Outlook 16 用户的签名总是能绕过修剪器,还有另一个来自未知客户端(但通过 outlook.com 和/或 MS-Exchange 发送)的签名,其底部有一些白色方块图片文件,如下所示:

![~WRD000.jpg|100x100](upload://bONwCMToQaefS5MCaw6ckHjvG5z.jpg)

![image001.jpg|45x45](upload://yS0BlfXTqaPhoqyF6LaZLwt7xJv.jpg)

还有其他偶尔能绕过修剪器的签名,但它们出现得并不频繁,也没有规律。

嗯——接下来最好的策略是什么?

这个 email_reply_trimmer 库是不是任何人都能(比如像我这样的)随便摆弄一下,看看能否识别脚本中针对其他邮件应用的模式,并添加一个用于 Outlook 2016 签名的过滤器?我想我读到过这个脚本现在已经是 Discourse 的核心部分了?还是说我在自欺欺人?

我从未接触过 GitHub,也不想在实验过程中给其他人带来麻烦,甚至对我的论坛造成不可挽回的损害。

你可以私信我一封未被正确截断的邮件的源码,我会查看一下。

我们使用一个网页表单来生成电子邮件,以便在某个分类中创建新主题。

该网页表单默认包含以下内容:

此邮件是有人填写表单后自动发送至 [分类邮箱] 的。
点击此处举报不需要的邮件。

有没有办法删除类似这样的消息?

尝试修改网页表单软件,将消息放在一个(两个短横线和一个空格)之后,使其看起来更像签名。

示例内容
表单:内容

-- 

此邮件是根据表单提交结果发送至 [类别邮箱] 的。
点击此处举报垃圾邮件。

请勿直接复制我上方带有特殊 Unicode 处理的两个短横线和一个空格

谢谢,我会看看是否可以将此功能添加到网页表单模板中!

这个功能将非常有用——能够将违规签名添加到“再次看到时直接移除”的列表中。由于只需按原样移除该文本,而无需尝试推测性地匹配所有签名,因此匹配过程可以更加直接。

我附议这一点。不过,我会尝试建议大家使用“-- ”。

这不太对——中间应该有个空格,所以应该是:“- -”

就我个人而言,我发现让用户在签名中加入这个还挺难的。如果你能站在他们身后帮他们设置,那倒没问题,但他们自己操作时就会很吃力!也许你的用户更懂技术吧。

我相当确定惯例是“连字符 - 连字符 - 空格”,如上所述。另请参阅这里的介绍性注释和第 144 行:discourse_email_parser/lib/discourse_email_parser.rb at master · discourse/discourse_email_parser · GitHub

那些评论和代码中包含“- -”。请仔细查看。

它们确实不匹配。如果你将第 144 行的正则表达式复制粘贴到 https://rubular.com/ 中,你会发现它能匹配 -- (两个连字符加一个空格),但无法匹配 - - (连字符、空格、连字符)。

啊,我明白了。看起来确实两个连字符之间有一个空格,除非你把它复制粘贴到其他地方(从第 144 行):
"--/s" —— 以代码形式呈现时,在我看来连字符之间似乎有个空格。
而将"–/s"直接复制粘贴到 Markdown 中,则明显没有空格。

这或许能解释为什么我之前在这件事上一直难以取得进展!感谢你坚持到底。

不客气 :slight_smile:

我不懂 Ruby,但 \s 似乎既能匹配换行符也能匹配空格——如果没错的话,那么单独一行的 --(不带空格)应该也没问题。

Markdown 使用一连串连字符来表示水平分隔线。我们在水平分隔线下方包含会议详情的消息。是否有替代方案可以创建分隔符,同时避免内容被截断?

例如,一封示例 Incoming 邮件可能包含以下内容:


这是一封示例邮件的内容。它可能包含会议详情。如果此帖子通过电子邮件发送,那么这一部分及其之后的所有内容都将被截断。


谢谢!

我刚刚给你发了一条私信,其中包含一封邮件和一篇帖子(链接:https://meta.discourse.org/t/re-email-signature-not-being-stripped-out-when-user-write-new-topic-or-reply-to-a-topic/182433),这个问题一直反复困扰着我们。

问题在于,当该用户通过邮件回复 Discourse 帖子时,他们的帖子中似乎会附加几张白色图片,导致文字后面出现一大块不需要的空白区域。这似乎只发生在这一位用户身上。严格来说,他们并没有设置邮件签名。

仍有大约 5% 到 10% 的成员签名漏网。

如果当前的启发式规则无法处理这些情况,我确实认为建立一个手动签名数据库,或者在邮件中嵌入那些持续被提交但无法自动识别的图片,是至关重要的。

我绝不可能要求用户仅仅为了这个论坛而更改他们的邮件签名,毕竟论坛只占他们日常邮件活动的极小部分。

我们当然希望不断改进,我们需要失败检测的示例,以便将其添加到我们的测试矩阵中。

我们如何才能有效地提交失败示例,以便您改进相关工作?

就我个人而言,由于这里是公开空间,我无法直接从我们的(私有)论坛发布示例。

一种可行的方式是:通过私信(或许可以加标签)发送给指定的工作人员(可附上设置链接以完成此流程)。