如何将所有用户的电子邮件通知偏好设置为无?

我的使用场景:我正在逐步导入当前的论坛。在第一步中,我们需要进行大量的分类调整、为用户颁发徽章、将用户加入用户组、移动帖子、发布包含帮助信息的新主题等。与此同时,我们将邀请少数精选用户协助进行测试等工作。

在此期间,我希望确保当前用户不会收到来自他们不知晓存在的论坛的邮件通知。“禁用所有邮件”的设置无法生效,因为测试用户需要能够请求重置密码以登录。

我已经禁用了邮件摘要,并将所有类别的默认设置调整为“静音”。

我希望确保除了用户主动请求重置密码外,不会发送任何其他类型的邮件或通知。

我该如何确保不发送任何邮件?目前的设置是否足够?

感谢您的帮助,让我更好地理解这个问题!

您想要停用所有用户。他们可以通过重置密码来重新激活。您应该可以通过在此处搜索或查看一些导入脚本来找到相应的 Rails 命令示例。

感谢您指出我需要停用它们。我找到了您在另一个主题中编写的脚本,这个脚本能实现目的,对吗?

cd /var/discourse
./launcher enter app
rails c
User.where(“last_seen_at < ‘2016-01-01’”).update_all(active: false)
exit
exit

看起来就是这样!您可能需要禁用所有用户,并让您的少数人员重置密码,以确保不会向错误的人发送邮件,并了解该流程是如何运作的。

好的,没问题。基本上,由于我没有导入密码,所以每个人都必须重置密码。

迁移完成后,我该如何重新激活所有人?
是将 active:false 替换为 active:true 吗?

他们需要通过“忘记密码”功能来重新登录。

好的,他们反正也需要这么做 :slight_smile:

感谢您的帮助和快速回复!

更新:非常感谢!刚刚运行了脚本。

首先我在管理后台检查了哪些用户会受到影响,目前我只需要自己处于活跃状态。我的最后登录时间大约是 50 天前(尽管我最近几天一直活跃),所以将 50 天作为截止点。

由于我比较懒,不想做太多计算,于是将日期调整为 2020-01-01 并运行了脚本。

结果,25400 名用户从活跃状态变更为非活跃状态。

另外:脚本会自动排除 discobot 和系统用户,它们将保持活跃状态。(这很合理,我很高兴程序是这样设计的:)