如果帖子添加了员工颜色,主题通知邮件未发送

当前运行 Discourse 3.5.0.beta7-dev (7562bc2b15)

在某些条件下安排帖子发布时,主题通知电子邮件未发送。

我们遇到了一个非常奇怪的 bug,虽然我们运行的是最新版本,但这种情况在最近几个月发生过几次,所以这个问题已经存在一段时间了。

我们有一个名为 #Announcements 的类别,所有用户的默认设置都是 Watching First Post

我们重现问题的步骤:

  1. 在一个隐藏的仅限员工的类别中撰写新主题。
  2. 为新主题的第一个帖子应用员工颜色。
  3. 设置主题计时器,安排发布,将类别设置为 #Announcements 并设置时间/日期。

应该发生的情况:

  • 主题从 #staff 移动到 #Announcements
  • 发送数万封电子邮件。
  • 每个用户都会收到通知。

实际发生的情况:

  • 主题从 #staff 移动到 #Announcements
  • 未发送任何电子邮件
  • 每个用户都会收到通知。

在等待计划发布时间到来时,我可以看到这两个任务正在等待(按帖子 ID 过滤):

十分钟后,当主题发布到 #Announcements 时,任务消失了:

通知已发送,这是测试帐户收到的内容:

但仍然没有电子邮件发出。

通常在这个时候,我们会看到数万封电子邮件开始在“Scheduled”中排队,然后逐渐移到“Enqueued”,但什么也没发生,零封电子邮件发出。

Discourse 错误日志中也没有任何内容。

帖子包含一个投票,但我怀疑帖子内容无关紧要,不过我在这里提到它,以防万一投票也相关。

今天的失败测试可以在这里找到,如果对任何人有帮助:https://greyarro.ws/t/do-you-own-a-drone-thats-not-on-the-what-do-you-fly-list/98146.json

此失败的关键似乎在于为计划发布的帖子添加员工颜色。

所有其他计划发布的帖子电子邮件都能正常发送,添加员工颜色会导致每次都失败。

3 个赞

我能重现此问题。 :raised_hand:

我的基本步骤:

  • email time window(邮件时间窗口)调整为 1 分钟(可选,但可以加快速度)
  • 作为管理员,确保测试用户正在“关注”一个测试分类的“第一帖”
  • 作为管理员,在 Staff 分类中创建一个主题
  • 使用帖子扳手为第一个/唯一的帖子添加 Staff Colour(员工颜色)
  • 将主题计时器设置为在 1 分钟后“计划发布”到测试分类中
  • 做一个关于冰淇淋的小白日梦,等待主题发布,然后再等待一分钟以覆盖邮件时间窗口
  • 作为管理员,检查测试用户的通知,然后检查站点的邮件日志

预期结果: 测试用户收到关于已安排主题的通知,并且存在一个邮件日志,表明已发送伴随的邮件通知。

实际结果: 测试用户收到站内通知,但未发送邮件。

(我还进行了不带 staff colour 步骤的测试作为对照。一切正常。站内通知和邮件通知都已发送)

这是否与 staff colour 将 post_type 调整为 ‘2’(moderator_action)有关,而代码中未将其计入?

4 个赞

我就知道我会忘记一个重现步骤 :rofl:

这是一个有趣的观察:

2 个赞

是的,一旦你将帖子转为员工帖子,它就变成了 Post.types[:moderator_action]。我认为我们应该在这里通知,遗漏似乎是个错误。

添加了一个 pri-medium(在接下来的 4 周内某个时间),以便团队可以查看一下。

2 个赞

出于好奇,回复用户并为回复设置管理员颜色是否也会导致不向该用户发送电子邮件通知?