| 摘要 | 向标记为 contact 的任何主题的顶部添加联系表单。通过表单提交的信息将发送到配置为接收它的组或类别。 |
|
| 存储库链接 | https://github.com/jericson/discourse-contact-plugin | |
| 安装指南 | 如何在 Discourse 中安装插件 |
功能
启用后,“联系表单”插件会在标记为 contact 的任何主题的顶部放置一个联系表单。通过表单提交的数据将发送到配置为接收来自 contact_form_email 的邮件的类别或组。[1] 与传统的联系表单一样,用户无需拥有网站帐户即可提交。
访客可能会看到以下内容:
请注意,这是一个常规帖子,可以在正文中包含您想要的任何说明。[2] 目前字段名称是硬编码的,并且没有进行真正的验证,但请参阅下面的 TODO 部分。发送消息后,它将显示在配置组的消息馈送中:
根据其电子邮件通知的配置方式,配置组的成员也可能收到来自 Discourse 的电子邮件:
配置
要使用此插件,您必须配置入站电子邮件以创建新主题或组消息。不需要设置通过电子邮件回复,因为插件实际上不发送电子邮件。它劫持 API 来模拟入站邮件。(尽管如此,通过电子邮件回复是一项有用的功能!)
特别是,此插件需要:
email_in和enable_staged_users
已启用。
启用后,任何标记为 contact 的主题都将在 topic-above-posts 插件出口处添加一个联系表单。
发送到组
由于人们将使用此表单提交他们的个人信息,因此将结果发送到封闭组是最安全的选择。
- 为将处理联系人的人员创建一个新组。(我通常为了简单起见将其命名为“联系人”,但它可以是任何名称,包括现有组。)
- 添加将接收联系人信息的成员。
- 不要勾选任何访问选项。这应该是一个封闭的组。
- 根据您的组织情况合理设置组的可见性。
- 将“自定义入站电子邮件地址”设置为与
contact_form_email设置相同。(默认情况下,它是“contact@example.com” 。)
…
发送到类别
也可以使用“自定义入站电子邮件地址”类别设置将信息发送到类别。请务必启用“接受没有帐户的匿名用户的电子邮件”。
但是,不建议将联系信息发送到类别! 如果由于某种原因更改了类别的访问权限,可能会将个人信息暴露给不应访问的人(或搜索引擎)。如果联系人发送到组消息,这种情况发生的可能性要小得多。
限制谁可以添加联系表单
到处出现联系表单可能会很奇怪,因此您可能希望限制谁可以使用 contact 标签。要做到这一点,请创建一个新的标签组:
- 从
/tags页面,选择右上角的扳手图标。 - 选择“管理标签组”,然后选择“
新建组”。 - 填写适当的名称(例如,“仅限员工”),添加
contact标签,然后选择“标签对所有人可见,但只有以下组可以使用它们”。 - 选择您希望允许添加联系表单的组(通常是“staff”或“admins”),然后保存标签组。
更新日志
- 2024 年 4 月 25 日:Alpha 发布。
TODO
- 我想设置测试,以确保在进行更改时不会出现任何问题。我特别想验证没有帐户的用户可以提交他们的数据。
- 在测试过程中,我发现了一个重大的数据泄露。我已经移除了那个特定的漏洞,但我真的很需要一些测试方面的帮助。
- 表单不执行任何验证。唯一真正的要求是电子邮件字段看起来像一个电子邮件。如果有人在没有添加电子邮件的情况下留下响应,表单将悄悄失败。
- 没有防范垃圾邮件或滥用的措施。
- 代码质量非常像
my-first-plugin,基于使用过时约定的示例。欢迎任何关于样式的建议。 - 我喜欢将联系表单与标记为“contact”的主题相关联,但这很复杂,可能是不必要的。我正在考虑添加一个仅包含联系表单的新路由以简化操作。
- 联系数据存储在数据库中,但可能需要一个管理员面板来查看联系人列表。
- 表单已固定以满足我当前的要求,但能够灵活地选择提示用户填写哪些字段会很方便。





