| 摘要 | 为任何标记为 contact 的主题顶部添加一个联系表单。通过该表单提交的信息将发送至配置为接收该信息的群组或分类。 |
|
| 仓库链接 | https://github.com/jericson/discourse-contact-plugin | |
| 安装指南 | 如何在 Discourse 中安装插件 |
功能
启用后,Contact Form 插件会在任何标记为 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标签,并选择“标签对所有人可见,但仅以下群组可使用”。 - 选择您希望允许添加联系表单的群组(通常是“员工”或“管理员”),然后保存该标签组。
更新日志
- 2024 年 4 月 25 日:Alpha 版本发布。
待办事项
- 我希望设置测试,确保在修改时不会破坏任何功能。我特别希望验证没有账户的用户是否可以提交数据。
- 在测试过程中,我发现了一个严重的数据泄露问题。我已移除了该特定漏洞,但非常需要一些帮助来进行测试。
- 表单未进行任何验证。唯一真正的要求是邮箱字段看起来像一个邮箱地址。如果某人未填写邮箱就提交回复,表单将静默失败。
- 目前没有防垃圾邮件或滥用的保护机制。
- 代码质量非常接近“我的第一个插件”,基于使用了过时约定的示例。欢迎任何关于代码风格的建议。
- 我喜欢将联系表单与标记为“联系”的主题关联,但这很复杂且可能没有必要。我正在考虑添加一个新的路由,仅用于联系表单以简化操作。
- 联系数据存储在数据库中,但如果有一个管理面板来查看联系人列表可能会更有帮助。
- 表单目前固定符合我的当前需求,但如果能灵活设置提示字段将会非常有用。
该设置默认为 “contact@example.com”,但可配置为接收真实邮箱地址。 ↩︎
甚至可以对联系表单进行回复,无论好坏。 ↩︎





