2个版本 (1个稳定版)
1.0.0 | 2024年3月5日 |
---|---|
1.0.0-alpha-1 |
|
#137 in HTTP服务器
每月85次下载
645KB
2K SLoC
Catapulte
什么是Catapulte?
Catapulte是一个开源的邮件发送器,您可以选择自行托管。
您可以使用它快速将事务性邮件发送到目标地址。
我们为什么要构建Catapulte?
Catapulte起源于使用多个电子邮件提供商的挫败感。我们曾经使用过像sendgrid、mailgun、mailchimp、sendinblue等这样的产品。
但是它们有很多缺点
- 其中大多数都不是真正面向事务的,用户抱怨他们的登录邮件需要很长时间才能到达。
- 您无法托管它,也无法在本地使用它
- 它是美国的,根据爱国者法案,他们能够访问您的用户数据。
- 它们通常没有为我们的非技术同事提供的模板工具,他们每两天就会要求我们更改文字。而且当它们有这些工具时,编辑器就像在线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的认证方式
- 您需要足够用户友好的界面,以便您的经理可以编写邮件
谢谢!
依赖项
~36–53MB
~1M SLoC