11个版本 (1个稳定版本)
1.0.0 | 2023年12月25日 |
---|---|
0.15.1 | 2023年11月18日 |
0.13.0 | 2023年10月10日 |
0.9.1 | 2023年7月8日 |
0.5.1 | 2023年2月15日 |
#197 in HTTP服务器
每月下载量 59次
45KB
718 行
Formulate
Formulate 是一个监听Web表单提交的Rust后端服务。它使用 Rocket 框架构建,并支持最低Rust版本 (MSRV) 1.65.0。
配置
配置使用TOML文件或环境变量完成。配置键被添加到 [application] 表中,并带有所需的值。需要两个电子邮件地址键,
sending_email
和 destination_email
。这些电子邮件地址可以在 Rocket.toml
配置文件中设置(例如 Rocket.template.toml)。
或者,可以使用两个环境变量: FORMULATE_destination_email
和 FORMULATE_sending_email
提供值。配置覆盖遵循Rocket框架的规则。如果同时设置了配置文件和环境变量,则配置文件将具有优先级。
destination_email
应该是您希望将表单提交发送到的电子邮件地址。
sending_email
是邮件一旦发送到您的收件箱,将显示的地址。这是一个稳定的地址,您可以用来过滤您的表单提交电子邮件。此 "发送电子邮件" 将用于邮件的 'From:' 标题。
'Reply-To' 地址将是表单用户提交的电子邮件地址。
中继电子邮件
另一对配置变量, mail_relay_host
和 mail_relay_port
,是可选的。如果希望通过SMTP协议中继电子邮件,可以使用这些变量。
mail_relay_host
定义中继邮件服务器的主机名。
- 也可以使用
FORMULATE_mail_relay_host
环境变量设置。
mail_relay_port
如果未设置,默认为端口号 25,并允许用户选择一个邮件中继服务正在监听的备用端口。
- 也可以使用环境变量
FORMULATE_mail_relay_port
来设置。
如果正在使用的邮件中继需要身份验证,可选的配置变量 smtp_username
和 smtp_password
允许设置这些信息。
smtp_username
定义用于与 mail_relay_host
SMTP 服务器进行身份验证的登录(电子邮件地址)。
- 也可以使用环境变量
FORMULATE_smtp_username
来设置。
smtp_password
设置用于与 mail_relay_host
SMTP 服务器进行身份验证的密码。
- 也可以使用环境变量
FORMULATE_smtp_password
来设置。
这使用户能够灵活地使用 formulate
通过本地可用的 sendmail
(或 sendmail 的替代品)、电子邮件服务或个人电子邮件账户发送电子邮件。
垃圾邮件允许列表/阻止列表
formulate
也提供了基本的垃圾邮件阻止功能。此可选功能可以通过向 [spam]
表中添加 blocklist
或 allowlist
键来启用。
如果存在,blocklist
或 allowlist
应该是一个格式化为域名字符串的字符串数组。
阻止列表
配置后,blocklist
中的字符串将在表单的消息正文中搜索。如果找到任何匹配项,表单处理将提前结束。同时也会提供一个错误,消息表明表单提交可能为垃圾邮件。
示例列表可以在 Rocket.template.toml 中找到,并可由任何人免费使用。
- 此功能也可以使用环境变量
FORMULATE_SPAM_blocklist
来启用。例如:FORMULATE_SPAM_blocklist=["acme.com", "mega.lo.mania"]
允许列表
配置 allowlist
后,配置的字符串将用于与表单的消息正文中找到的 URL 进行匹配。如果 任何 URL 与允许的域不匹配,表单处理将提前结束。同时也会提供一个错误,消息表明表单提交可能为垃圾邮件。
示例配置可以在 Rocket.template.toml 中找到。
- 此功能也可以使用环境变量
FORMULATE_SPAM_allowlist
来启用。例如:FORMULATE_SPAM_allowlist=["good.domain.com", "gooder.domain.com"]
停止论坛垃圾邮件 API
已通过将表单用户提交的电子邮件地址与stopforumspam.org API进行核对,增加了额外的垃圾邮件缓解技术。启用此功能将使表单处理变慢,因为它需要向API发出网络请求。还可能出现网络问题或API本身的问题导致失败。与API通信失败或从API获取结果将导致跳过检查。formulate
在确定电子邮件地址是否为垃圾邮件时,仅考虑正向匹配。
通过在[spam]
表中设置blocking=true
来启用此功能。也可以使用环境变量FORMULATE_SPAM_blocking
来启用此功能。
接受的表单字段
它接受以下参数,其中大部分是必需的
email
:表单发送者的电子邮件地址。这将被设置为发送电子邮件中的'Reply-To'地址。也可以提交为e-mail
。full_name
:表单发送者希望在发送的电子邮件中使用的名称。这将被用作电子邮件发送者名称。也可以提交为fullname
。from_site
:提交表单的网站的URL。也可以提交为site
、website
或location
。对于url-encoded表单提交,这可以设置为用户成功提交表单时应重定向到的页面的URL。此表单字段可能被隐藏,并在提交之前通过JavaScript设置。message
:发送电子邮件的消息正文。subject
:(可选)电子邮件的标题。如果没有提供,将使用默认主题。redirect
:(可选)布尔值,用于指示用户是否希望将非JSON提交重定向到from_site
URL。
将电子邮件传递给sendmail
后,formulate
将返回适当的HTTP状态码以指示成功或失败。
当redirect
字段设置为true时,成功的URL编码或多部分提交将被重定向到from_site
字段中定义的URL。如果省略redirect
或将其设置为false,则提供一个带有适当HTTP状态的消息。在失败的情况下,提供一个用户可读的错误,以及适当的HTTP状态。
JSON表单提交将收到一个包含适当成功或失败消息和HTTP状态的JSON响应。
部署
git存储库中包含一个Dockerfile
,可以用作在Linux上容器化部署的起点。
还提供了一个rc脚本,以帮助在FreeBSD平台上进行部署。
依赖关系
在README.dependencies中可以找到项目依赖关系的描述以及为什么添加它们的一些理由。
依赖关系
~28–63MB
~1M SLoC