#send-email #web-dev #form-data #env-var #web-apps #backend-server

app reformulate

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

4个版本 (破坏性更新)

0.4.0 2023年11月29日
0.3.0 2023年10月31日
0.2.0 2023年4月1日
0.1.0 2023年3月21日

#459 in HTTP服务器

MIT许可

29KB
404

ReFormulate

一个后端服务器应用程序,用于监听Web表单提交,使用actix-web框架实现。最低支持的Rust版本(MSRV)为1.62.1。

配置

配置目前非常简单,只需要设置两个环境变量:FORMULATE_DESTINATION_EMAILFORMULATE_SENDING_EMAIL

"目标电子邮件"将是您希望表单提交发送到的电子邮件地址。

"发送电子邮件"是当电子邮件到达您的收件箱时发出的地址。它旨在成为一个稳定的地址,您可以用来过滤表单提交电子邮件。此"发送电子邮件"将用于电子邮件的'From:'头。

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

中继电子邮件

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

如果设置了FORMULATE_MAIL_RELAY_HOST,它定义了中继邮件服务器的主机名。

FORMULATE_MAIL_RELAY_PORT始终默认为端口25,但允许用户定义邮件中继正在监听的备用端口。

接受的表单字段

它接受以下参数,其中大多数是必需的

  • email:表单发送者的电子邮件地址。这将被设置为已发送电子邮件的'Reply-To'地址。
  • from_site:提交表单的网站的URL。也可以提交为sitewebsitelocation。对于URL编码的表单提交,此字段可以设置为用户表单提交成功后应重定向到的页面URL。此表单字段可以隐藏,并通过JavaScript在提交前设置。
  • full_name:表单发送者希望用于发送电子邮件的名称。这将被用作电子邮件发送者名称。也可以提交为 fullnamefullName
  • message:发送电子邮件的消息正文
  • subject:(可选) 电子邮件的标题。如果没有提供,将使用默认标题。
  • redirect:(可选) 用于指示用户是否希望被重定向到 from_site URL。通过 JSON 提交时,需要以布尔值发送。

处理表单提交后,将返回包含适当 HTTP 状态代码的消息,指示成功或失败。

成功的 URL 编码提交将在 redirect 值为 true 时重定向到 from_site 字段中定义的 URL。如果省略 redirect 或为 false,将提供包含适当 HTTP 状态的消息。在失败的情况下,将发送一个用户可读的错误,并附带相关的 HTTP 状态。

JSON 表单提交将接收一个包含适当成功或失败消息和 HTTP 状态的 JSON 响应。

阻止垃圾邮件

在 reformulate 中现在提供了基本的垃圾邮件阻止功能。

垃圾邮件阻止列表

可以通过定义 FORMULATE_SPAM_BLOCKLIST 环境变量来启用可选的阻止列表功能。

FORMULATE_SPAM_BLOCKLIST 应该是一个 以逗号分隔的字符串列表,格式为域名。这些字符串将在表单的消息正文中进行搜索;如果找到任何匹配项,则将提前结束表单处理。将返回一个错误,其中包含消息表示表单提交疑似垃圾邮件。例如:FORMULATE_SPAM_BLOCKLIST="acme.com, mega.lo.mania"

停止论坛垃圾邮件 API

已添加另一个垃圾邮件缓解功能。现在可以检查表单提交的电子邮件是否与 stopforumspam.org API 相匹配。启用此功能 将使 reformulate 变慢,因为它需要向 API 发送网络请求。还可能出现网络问题或 API 本身的问题导致失败。与 API 通信失败或从 API 获取结果将导致跳过检查。只有与数据匹配的正例将被视为有效的垃圾邮件。

通过将 FORMULATE_SPAM_BLOCKING 环境变量设置为 true 来启用此功能。

部署

源存储库中包含了一个 Dockerfile,以帮助进行容器化部署。

依赖项

~27–41MB
~755K SLoC