如何为分阶段用户禁用邮件?

继续讨论 Discourse 中各种用户状态的描述(管理员 / 版主 / 工作人员 / 开发者 / 其他)

我有一个论坛,其中包含了从 Google Groups 导入的内容。出于某些原因,该论坛将作为 Google Group 的静态存档。Google Group 将继续独立运行,而论坛仅将其帖子作为静态存档数据包含在内。目前,我通过定期运行 Google 导入脚本来实现这一点,但我认为很快会改为配置传入邮件,并将该类别订阅到 Google Group 列表。

我已关闭“启用暂存用户”选项。所有用户均显示为 active=falsestaged=true

如果某人回复某条帖子,他们会收到一封电子邮件。

如果某人给他们发送私信(PM),他们也会收到一封电子邮件。

如果我将用户的 staged 状态更改为 false,他们将不再收到私信,但仍会收到关于其消息回复的通知。这似乎是一种理想的行为,也正好是今天有人询问的问题。但相关实体认为,他们无权向这些尚未在论坛上创建账户的 Google Groups 用户发送邮件。

也许我可以修改导入脚本,或者开发一个插件,使所有 active=false 的用户自动设置为 staged=false?或者我是否可以通过插件将存档类别设置为不可被关注?

顺便说明一下,暂存用户应有的处理方式如下:

2 个赞

继续讨论 如何禁用暂存用户的邮件?

好吧,我还没找到阻止暂存用户接收邮件的方法,所以我打算

def no_mail_for_staged_users
  staged=User.where(staged: true)
  staged.all.each do |user|
    o=UserOption.find_by(user_id: user.id)
    o.email_level = 2
    o.email_messages_level = 2
    o.email_digests = false
    o.save
  end
end

并修改 mbox 脚本,以类似方式禁用其创建的暂存用户的邮件。

如果有人有更好的想法,我很乐意听取。

您使用的是最新版本吗?我们在过去一两周内修复了一个关于处于暂存状态的用户收到邮件的漏洞。

2 个赞

那很好。我会在周一检查一下,看看如何撤销用户选项的更改。

1 个赞

有这个插件吗?

这是一个非常老的话题,我写这个的时候正在做的事情现在已经不可能了。

看起来我将那个函数添加到了导入用户的脚本中。如果你因为某些原因想让它发生,那么你可能需要一个插件来实现。描述一下是什么导致了你不想收到邮件的已暂存用户;你可能需要更新任何正在做这件事的东西,来运行一个像我包含的那个脚本。如果你需要一个自定义插件来做这件事,你可以在 Marketplace 发帖或直接联系我。

1 个赞