#email-template #open #source #host #yourself #destination #quickly

app catapulte

Catapulte是一个开源的邮件发送器,您可以选择自行托管。您可以快速使用它将事务性邮件发送到目标地址。

2个版本 (1个稳定版)

1.0.0 2024年3月5日
1.0.0-alpha-1 2024年1月4日

#137 in HTTP服务器

Download history 27/week @ 2024-03-09 8/week @ 2024-03-16 1/week @ 2024-03-23 47/week @ 2024-03-30 11/week @ 2024-04-06

每月85次下载

自定义许可

645KB
2K SLoC

Catapulte

Build Status codecov

Docker Pulls Docker Image Size (latest by date)

什么是Catapulte?

Catapulte是一个开源的邮件发送器,您可以选择自行托管。

您可以使用它快速将事务性邮件发送到目标地址。

Deploy

我们为什么要构建Catapulte?

Catapulte起源于使用多个电子邮件提供商的挫败感。我们曾经使用过像sendgridmailgunmailchimpsendinblue等这样的产品。

但是它们有很多缺点

  • 其中大多数都不是真正面向事务的,用户抱怨他们的登录邮件需要很长时间才能到达。
  • 您无法托管它,也无法在本地使用它
  • 它是美国的,根据爱国者法案,他们能够访问您的用户数据。
  • 它们通常没有为我们的非技术同事提供的模板工具,他们每两天就会要求我们更改文字。而且当它们有这些工具时,编辑器就像在线HTML编辑器,所以最终我们还是要做模板。

如何使用它?

Catapulte是一个简单的服务,它渲染您的mjml模板,插值数据,然后将其发送到SMTP服务器。如果您想了解如何创建自己的模板,请查看此存储库中的/template文件夹。

然后您有几种方法可以启动Catapulte。如果您使用的是amd64、i386或arm64v8架构,我们建议使用Docker。通过执行以下操作,您将能够运行一个服务器,该服务器将渲染并发送您的邮件。

docker run -d \
  --name catapulte \
  -e SMTP__HOSTNAME=localhost \
  -e SMTP__PORT=25 \
  -e SMTP__USERNAME=optional \
  -e SMTP__PASSWORD=optional \
  -e SMTP__TLS_ENABLED=true \
  -e SMTP__ACCEPT_INVALID_CERT=false \
  -e TEMPLATE__TYPE=local \
  -e TEMPLATE__PATH=/templates \
  -p 3000:3000 \
  -v /path/to/your/templates:/templates:ro \
  jdrouet/catapulte:latest

一旦服务器启动,您只需通过HTTP请求发送邮件即可。

curl -X POST -v \
  -H "Content-Type: application/json" \
  --data '{"from":"[email protected]","to":"[email protected]","params":{"some":"data"}}' \
  https://127.0.0.1:3000/templates/the-name-of-your-template/json

您还可以使用多部分请求发送附件。

curl -X POST -v \
  -F attachments=@asset/cat.jpg \
  -F [email protected] \
  -F [email protected] \
  -F params='{"some":"data"}' \
  https://127.0.0.1:3000/templates/user-login/multipart

您可以使用一些环境变量来配置它,并可以在这里找到更多信息。

如果您有API规范,当Catapulte运行时,Open API规范也位于/openapi.json

为了在生产环境中使用它,我们准备了一份关于如何使用Catapulte与Amazon Simple Email Service的文档。

发送给多个收件人

您只需在to字段中使用一个数组就可以将相同的电子邮件发送给多个收件人,如下所示

curl -X POST -v \
  -H "Content-Type: application/json" \
  --data '{"from":"[email protected]","to":["[email protected]","[email protected]"],"params":{"some":"data"}}' \
  https://127.0.0.1:3000/templates/the-name-of-your-template/json

您应该使用它吗?

如果您像我们一样,没有找到任何做事务性电子邮件的好方法,那么答案是YES!

为什么你应该使用它

  • 您在一家初创公司工作

    • 您没有大量资金用于邮件工具,所以请使用开源软件,并通过您自己的SMTP(或从Amazon SES,价格便宜)发送邮件
    • 您没有时间每天更改电子邮件模板,所以让您的产品负责人来做
    • 您想添加这个小功能,只需发起一个pull request...
  • 您在大公司工作

    • 您不能使用这些外部服务,因为您不允许将用户的个人数据放在外部服务上。
    • 您无法访问外部服务,因为它们被代理阻止了。
    • 您想自定义SMTP的认证方式
    • 您需要足够用户友好的界面,以便您的经理可以编写邮件

谢谢!

Buy Me A Coffee

依赖项

~36–53MB
~1M SLoC