#env-var #rocket-web #web-dev #web-apps #form-data #web-framework

app formulate

formulate 是一个独立的服务器,用于监听Web表单数据提交

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服务器

Download history 3/week @ 2024-03-08 2/week @ 2024-03-15 58/week @ 2024-03-29 12/week @ 2024-04-05

每月下载量 59次

MIT 许可证

45KB
718

Formulate

Formulate 是一个监听Web表单提交的Rust后端服务。它使用 Rocket 框架构建,并支持最低Rust版本 (MSRV) 1.65.0。

配置

配置使用TOML文件或环境变量完成。配置键被添加到 [application] 表中,并带有所需的值。需要两个电子邮件地址键,sending_emaildestination_email。这些电子邮件地址可以在 Rocket.toml 配置文件中设置(例如 Rocket.template.toml)。

或者,可以使用两个环境变量: FORMULATE_destination_emailFORMULATE_sending_email 提供值。配置覆盖遵循Rocket框架的规则。如果同时设置了配置文件和环境变量,则配置文件将具有优先级。

destination_email 应该是您希望将表单提交发送到的电子邮件地址。

sending_email 是邮件一旦发送到您的收件箱,将显示的地址。这是一个稳定的地址,您可以用来过滤您的表单提交电子邮件。此 "发送电子邮件" 将用于邮件的 'From:' 标题。

'Reply-To' 地址将是表单用户提交的电子邮件地址。

中继电子邮件

另一对配置变量, mail_relay_hostmail_relay_port,是可选的。如果希望通过SMTP协议中继电子邮件,可以使用这些变量。

mail_relay_host 定义中继邮件服务器的主机名。

  • 也可以使用 FORMULATE_mail_relay_host 环境变量设置。

mail_relay_port 如果未设置,默认为端口号 25,并允许用户选择一个邮件中继服务正在监听的备用端口。

  • 也可以使用环境变量 FORMULATE_mail_relay_port 来设置。

如果正在使用的邮件中继需要身份验证,可选的配置变量 smtp_usernamesmtp_password 允许设置这些信息。

smtp_username 定义用于与 mail_relay_host SMTP 服务器进行身份验证的登录(电子邮件地址)。

  • 也可以使用环境变量 FORMULATE_smtp_username 来设置。

smtp_password 设置用于与 mail_relay_host SMTP 服务器进行身份验证的密码。

  • 也可以使用环境变量 FORMULATE_smtp_password 来设置。

这使用户能够灵活地使用 formulate 通过本地可用的 sendmail(或 sendmail 的替代品)、电子邮件服务或个人电子邮件账户发送电子邮件。

垃圾邮件允许列表/阻止列表

formulate 也提供了基本的垃圾邮件阻止功能。此可选功能可以通过向 [spam] 表中添加 blocklistallowlist 键来启用。

如果存在,blocklistallowlist 应该是一个格式化为域名字符串的字符串数组。

阻止列表

配置后,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。也可以提交为sitewebsitelocation。对于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