联系表格

:information_source: 摘要 向标记为 contact 的任何主题的顶部添加联系表单。通过表单提交的信息将发送到配置为接收它的组或类别。
:hammer_and_wrench: 存储库链接 https://github.com/jericson/discourse-contact-plugin
:open_book: 安装指南 如何在 Discourse 中安装插件

功能

启用后,“联系表单”插件会在标记为 contact 的任何主题的顶部放置一个联系表单。通过表单提交的数据将发送到配置为接收来自 contact_form_email 的邮件的类别或组。[1] 与传统的联系表单一样,用户无需拥有网站帐户即可提交。

访客可能会看到以下内容:

请注意,这是一个常规帖子,可以在正文中包含您想要的任何说明。[2] 目前字段名称是硬编码的,并且没有进行真正的验证,但请参阅下面的 TODO 部分。发送消息后,它将显示在配置组的消息馈送中:

根据其电子邮件通知的配置方式,配置组的成员也可能收到来自 Discourse 的电子邮件:

配置

要使用此插件,您必须配置入站电子邮件以创建新主题或组消息。不需要设置通过电子邮件回复,因为插件实际上不发送电子邮件。它劫持 API 来模拟入站邮件。(尽管如此,通过电子邮件回复是一项有用的功能!)

特别是,此插件需要:

  • email_in
  • enable_staged_users

已启用。

启用后,任何标记为 contact 的主题都将在 topic-above-posts 插件出口处添加一个联系表单。

发送到组

由于人们将使用此表单提交他们的个人信息,因此将结果发送到封闭组是最安全的选择。

  1. 为将处理联系人的人员创建一个新组。(我通常为了简单起见将其命名为“联系人”,但它可以是任何名称,包括现有组。)
  2. 添加将接收联系人信息的成员。
  3. 不要勾选任何访问选项。这应该是一个封闭的组。
  4. 根据您的组织情况合理设置组的可见性。
  5. 将“自定义入站电子邮件地址”设置为与 contact_form_email 设置相同。(默认情况下,它是“contact@example.com” 。)

发送到类别

也可以使用“自定义入站电子邮件地址”类别设置将信息发送到类别。请务必启用“接受没有帐户的匿名用户的电子邮件”。

但是,不建议将联系信息发送到类别! 如果由于某种原因更改了类别的访问权限,可能会将个人信息暴露给不应访问的人(或搜索引擎)。如果联系人发送到组消息,这种情况发生的可能性要小得多。

限制谁可以添加联系表单

到处出现联系表单可能会很奇怪,因此您可能希望限制谁可以使用 contact 标签。要做到这一点,请创建一个新的标签组:

  1. /tags 页面,选择右上角的扳手图标。
  2. 选择“管理标签组”,然后选择“ :heavy_plus_sign: 新建组”。
  3. 填写适当的名称(例如,“仅限员工”),添加 contact 标签,然后选择“标签对所有人可见,但只有以下组可以使用它们”。
  4. 选择您希望允许添加联系表单的组(通常是“staff”或“admins”),然后保存标签组。

更新日志

  • 2024 年 4 月 25 日:Alpha 发布。

TODO

  • 我想设置测试,以确保在进行更改时不会出现任何问题。我特别想验证没有帐户的用户可以提交他们的数据。
  • 在测试过程中,我发现了一个重大的数据泄露。我已经移除了那个特定的漏洞,但我真的很需要一些测试方面的帮助。
  • 表单不执行任何验证。唯一真正的要求是电子邮件字段看起来像一个电子邮件。如果有人在没有添加电子邮件的情况下留下响应,表单将悄悄失败。
  • 没有防范垃圾邮件或滥用的措施。
  • 代码质量非常像 my-first-plugin,基于使用过时约定的示例。欢迎任何关于样式的建议。
  • 我喜欢将联系表单与标记为“contact”的主题相关联,但这很复杂,可能是不必要的。我正在考虑添加一个仅包含联系表单的新路由以简化操作。
  • 联系数据存储在数据库中,但可能需要一个管理员面板来查看联系人列表。
  • 表单已固定以满足我当前的要求,但能够灵活地选择提示用户填写哪些字段会很方便。

  1. 该设置默认为“contact@example.com”,但可以配置为接受真实电子邮件。 ↩︎

  2. 甚至可以回复联系表单,无论好坏。 ↩︎

13 个赞

这不起作用。你能更新一下 @jericson 吗?

对我来说是有效的。

1 个赞

这不是一个主题,而是一个插件。请参阅 https://meta.discourse.org/t/install-plugins-in-discourse/19157。

5 个赞

已安装。将我的电子邮件添加到了 contact_form_email,启用了 email_in,在 email_in 的允许组中添加了“everyone”,enable_staged_users。试用了表单,但我没有收到任何电子邮件。

2 个赞

好交易!如果您能告知是什么解决了问题,可能会对未来的读者有所帮助。

我猜不是将插件安装为主题:wink:

1 个赞

能否发布一些插件实际运行的截图?“联系表单”可以修改/配置吗?

1 个赞

当然!请看编辑后的帖子。

很遗憾不行。但欢迎提交拉取请求

1 个赞

很棒的插件。我猜欺骗的电子邮件地址不会显示给最终用户。

正确。我有一个另一个插件(比这个更粗糙)用于获取匿名评论。我使用 review@example.com 将这些消息路由到正确的目的地。它只是一个字符串。

1 个赞