摘要邮件未发送给所有用户——需要帮助调试

大家好,

一个大型的Discourse论坛遇到一个问题:活动摘要邮件(内容总结邮件)没有按预期发送给所有符合条件的用户。

问题详情:

  • 我了解到摘要邮件只发给不活跃的用户,但根据我们的设置,仍然应该有许多收件人。
  • 一些最近180天内没有活跃的用户没有收到摘要邮件。
  • 管理员  邮件  跳过日志中没有明显的错误,但邮件没有被投递。

已检查的设置和配置:

  1. 基于用户活动的发送:
  • 最近访问的用户不应收到摘要,但我确认有许多用户超过30天未访问,仍未收到。
  1. suppress_digest_email_after_days:
  • 设置为 180天(默认值)。然而,活跃未超过180天的用户仍未收到摘要。
  1. default_email_digest_frequency:
  • 初始设置为 每周(10080分钟)
  • 改为 每日(1440分钟),但仍未发送邮件。
  1. 邮件日志和投递检查:
  • 管理员  邮件  已发/跳过的日志没有显示尝试发送并跳过摘要邮件。
  • 用户端的邮件偏好没有阻止摘要邮件(在测试账号上已检查)。
  1. 服务器和邮件提供商:
  • 使用支持大规模发送的高容量邮件提供商。
  • 没有发现速率限制或投递问题的证据。
  • 其他类型的邮件(通知、密码重置等)正常投递。

问题疑问:

  • 是否有方法强制为所有符合不活跃标准的用户发送摘要邮件?
  • 是否可能存在任何潜在问题导致尽管设置正确,摘要邮件仍不发送?
  • 大型论坛是否存在已知的限制,影响摘要的调度或发送?
  • 调整其他设置是否能帮助确保摘要定期送达用户?

感谢您的任何指导或故障排除建议。提前感谢!

3 个赞

为了测试这一点,我们将摘要频率设置为 30 分钟,确保发布了新帖子,但仍未向符合条件的用户发送摘要电子邮件。

2 个赞

我正在协助 @emonunix 处理此事。似乎有一个 sidekiq 作业与此过程相关,每 30 分钟运行一次——在不知道如何排查此作业的情况下,它似乎运行正常。这是当前状态。

也许还有其他地方可以查找失败?

3 个赞

我一直在测试不同的配置,以了解为什么摘要邮件没有按预期发送。我尝试将摘要频率设置为30分钟进行测试,但设置未能保存,并在几分钟后显示了错误。

由于论坛规模较大,我怀疑这可能与Discourse在大规模时处理这些更改的方式有关。然而,我没有看到生成任何错误日志,这使得排查问题更加困难。

如果有人了解为什么设置可能无法保存——尤其是在大型论坛中——或者如何强制日志记录以捕获更多细节的建议,我将不胜感激。

3 个赞

我在控制台中遇到了一些错误:

控制台错误:

  1. 502 网关错误
  • URL:/admin/site_settings/default_email_digest_frequency
  • 加载资源失败:服务器响应状态为 502。
  1. 429 请求过多
  • URL:/message-bus/9787a3d46f4640699f8b3bd12d33a6c8/poll
  • 控制台错误:POST /message-bus/... 429 (请求过多)

不确定是什么原因造成的——如果您能提供一些见解,将不胜感激!

3 个赞

在此处添加更多详细信息。我们已经仔细阅读了本指南的多个版本:

但它并未为我们的问题提供任何解决方案。

有人有什么后续步骤来检查为什么摘要未发送吗?是否有某个流程或某种方法可以检查系统是否正在执行…

  • 查找符合条件的订阅者?
  • 获取列表?
  • 将列表放入内存?
  • 移至生成等?
2 个赞

快速提问,您是为所有用户追溯性地更改了此设置吗?据我所知,一旦在创建帐户时设置了它,如果您更改了默认值,它就不会改变。

检查您自己的个人资料,看看它是否是您期望的值。

3 个赞

是的,当我检查我自己的和一些随机用户的资料时,我发现那里反映了设置。

1 个赞

感谢 @Bas,我们已将其更新为 30,您可以追溯应用——系统会在进行此更改时显示一条消息,确认用户记录正在更新。

另外,我认为此错误与摘要电子邮件未发送无关,因为我们已确认设置正确的用户仍未收到它们。

如果您有任何其他想法,请告诉我!

2 个赞

您是否检查了未收到邮件的几个账户,看看它们是否屏蔽了类别或标签? 我认为如果您屏蔽了它们,摘要将不包含主题。

否则,团队可能是您最好的资源。

您的邮件服务器的另一件事是,您是否为您的域名添加了 dkim DNS 记录? 不确定这是否是所有 SMTP 提供商都需要。 但这有助于电子邮件不被标记为垃圾邮件或被阻止。 您是否让用户检查了垃圾邮件?

2 个赞

感谢 @Heliosurge,说清楚点,邮件根本没有发送,所以不是有没有被看到、被阻止或被发送到垃圾邮件的问题——Discourse 根本没有处理它们。这是过去几天活动情况的截图:

请注意,根据设置和配置,这应该每天大约发送 90 封摘要邮件。

[截图已编辑,因为它包含用户的电子邮件地址]

所以,据我们所知,邮件一开始就没有排队——就好像该任务没有运行,或者失败了……或者两者都有。

2 个赞

但是另一个组件是检查成员在标签和类别中的偏好设置。他们可能已将某些内容设为静音。

另一位团队成员可以回答的问题是,如果成员使用了电子邮件中的“取消订阅”链接,这是否会在用户偏好设置中明显地改变某些内容。

老实说,我认为这个问题是 iddm。但可能存在某种错误。

我个人认为您分享的所有内容都应该按预期工作。

2 个赞

@Heliosurge 抱歉才回复您的问题。当然,可能有一些用户设置了阻止他们接收摘要的选项。我们网站上有许多演示用户,我们正在控制他们的设置,并已(我们认为)验证了应该可以发送摘要。所以我不认为所有 80 个人都调整了他们的设置以不接收摘要。

奇怪的一点是,今天我注意到当我访问网站时,“上次访问”一行显示的时间很早,像是 9 天前,但我每天都访问——所以这不准确。这个逻辑是否也可能与 Discourse 用来发送摘要的日期有关?我不知道,只是觉得它有点奇怪,现在我们几乎是在徒劳地摸索下一步该怎么做……

2 个赞

这可能有关联。让其他用户检查一下,看看他们是否注意到是否准确。

确认您看到的是上次访问网站的时间吗?您提供的图片我认为是上次活动/帖子在主题中的时间。

1 个赞

感谢 @Heliosurge
由于 @Jacob_Peebles 经常访问该站点,在 ____ 上次访问 ____ 线以上,他应该只看到最新的帖子,例如 5/10 分钟前或 1/2 小时前的帖子。

我们无法弄清楚为什么 discourse 会在上次访问之上显示 8/9 天前的帖子。
我从我的账户检查过,没有遇到这个问题。

1 个赞

真的不太确定。从这里来看,作为管理员我们经常是最后知道问题的人。

你说你的上次访问信息看起来正确,而@Jacob_Peebles的上次访问没有正确更新?

想知道还有多少其他用户遇到类似问题。

Jacob,你的账户是否收到了摘要邮件? 现在,考虑到你经常在线,可能不在iirc的时间段内接收摘要邮件。不过,我没有看到有关用户离开多久会停止接收邮件的设置,除非你提到的30分钟、小时、每日、每周的设置是相关的。

当然,我们非常理解这可能会令人沮丧,因为这可以用来帮助减少邮件的发送负载,只考虑必要的邮件。

1 个赞

@Heliosurge 不,我没有收到摘要,但过去 3 天也没有任何用户收到摘要。

是的,这非常令人沮丧,毫无疑问。据我们所知,没有系统错误,Sidekiq 中也没有任何问题,日志中也没有任何记录,所以这真的可能发生在任何人身上……而且他们永远不会知道电子邮件没有按预期发送……真可怕。

可能与此网站设置有关

如果我理解正确,此设置允许未注销的会员最多登录 60 天。

也许可以试试 2 小时?! 不确定为什么此设置被设为 60 天。除非设置描述不准确?

因为在易受攻击的地方不断登录很麻烦。如果我没记错的话,我使用的是 365 天。并且没有已知的此类问题。

2 个赞

会话时长只是让我们不必反复重新登录,据我所知,这与电子邮件摘要无关。

3 个赞