Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jdrouet/catapulte
Rust implementation of catapulte email sender
https://github.com/jdrouet/catapulte
email hacktoberfest mjml smtp template
Last synced: about 2 months ago
JSON representation
Rust implementation of catapulte email sender
- Host: GitHub
- URL: https://github.com/jdrouet/catapulte
- Owner: jdrouet
- License: agpl-3.0
- Created: 2020-05-23T20:33:39.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-04-06T14:26:59.000Z (8 months ago)
- Last Synced: 2024-04-06T19:48:54.252Z (8 months ago)
- Topics: email, hacktoberfest, mjml, smtp, template
- Language: Rust
- Homepage:
- Size: 1.59 MB
- Stars: 134
- Watchers: 3
- Forks: 6
- Open Issues: 7
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-rust - jdrouet/catapulte - A microservice to send emails using [MRML](https://github.com/jdrouet/mrml) templates. (Libraries / Email)
- awesome-rust-cn - jdrouet/catapulte - ci.com/jdrouet/catapulte.svg?branch=main)](https://travis-ci.org/jdrouet/catapulte) (库 Libraries / 电子邮件 Email)
- awesome-rust - jdrouet/catapulte - A microservice to send emails using [MRML](https://github.com/jdrouet/mrml) templates. (Libraries / Email)
- fucking-awesome-rust - jdrouet/catapulte - A microservice to send emails using <b><code> 364⭐</code></b> <b><code> 24🍴</code></b> [MRML](https://github.com/jdrouet/mrml)) templates. (Libraries / Email)
- fucking-awesome-rust - jdrouet/catapulte - A microservice to send emails using <b><code> 340⭐</code></b> <b><code> 21🍴</code></b> [MRML](https://github.com/jdrouet/mrml)) templates. (Libraries / Email)
README
# Catapulte
[![Build Status](https://travis-ci.com/jdrouet/catapulte.svg?branch=main)](https://travis-ci.com/jdrouet/catapulte)
[![codecov](https://codecov.io/gh/jdrouet/catapulte/branch/main/graph/badge.svg)](https://codecov.io/gh/jdrouet/catapulte)[![Docker Pulls](https://img.shields.io/docker/pulls/jdrouet/catapulte)](https://hub.docker.com/r/jdrouet/catapulte)
[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/jdrouet/catapulte?sort=date)](https://hub.docker.com/r/jdrouet/catapulte)## What is catapulte?
Catapulte is an open source mailer you can host yourself.
You can use it to quickly catapult your transactionnal emails to destination.
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/jdrouet/catapulte)
## Why did we build catapulte?
Catapulte comes from the frustration of using several email providers.
We used to work with products like [sendgrid](https://sendgrid.com/),
[mailgun](https://www.mailgun.com/), [mailchimp](https://mailchimp.com/), [sendinblue](https://www.sendinblue.com/), etc.But they have many disadvantages :
- Most of them are not really transactionnal oriented, and users complain that their login emails take a long time to arrive.
- You cannot host it nor use it on premise
- It's American, with the patriot act, they are able to access your users data.
- They usually don't have templating tools for our non tech coworkers that ask us to change a wording every 2 days.
And when they do, the editors are like html online editors, so it ends up being our job to make the template anyway.## How to use it?
Catapulte is a simple service that renders your mjml template, interpolates the data and then sends it to a SMTP server.
If you want to see how to create your own template, take a look at the `/template` folder in this repository.You then have several options for starting catapulte. We recommend using Docker if you are on a amd64, i386 or arm64v8 architecture.
By doing the following, you'll be able to have a running server that will render and send your email.```bash
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
```Once your server started, you can simply send an email using an `HTTP` request.
```bash
curl -X POST -v \
-H "Content-Type: application/json" \
--data '{"from":"[email protected]","to":"[email protected]","params":{"some":"data"}}' \
http://localhost:3000/templates/the-name-of-your-template/json
```You can also send attachments using a multipart request.
```bash
curl -X POST -v \
-F attachments=@asset/cat.jpg \
-F [email protected] \
-F [email protected] \
-F params='{"some":"data"}' \
http://localhost:3000/templates/user-login/multipart
```You can configure it with [some environment variable](./wiki/environment-variables.md) and can find more information in [this wiki](./wiki/template-provider.md).
If you some API specification, the Open API specification is also available on `/openapi.json` when Catapulte is running.
To use it in production, we prepared a documentation on how to use Catapulte with [Amazon Simple Email Service](./wiki/with-aws-ses.md).
### Sending to multiple recipients
You can send the same email to multiple recipients just by using an array in the `to` field, like this:```bash
curl -X POST -v \
-H "Content-Type: application/json" \
--data '{"from":"[email protected]","to":["[email protected]","[email protected]"],"params":{"some":"data"}}' \
http://localhost:3000/templates/the-name-of-your-template/json
```## Should you use it?
If, like us, you didn't find any good way of doing transactionnal emails, then YES!
## Why you should use it :
- You work in a startup
- You don't have shit loads of money to spend on the mailing tools, so use something opensource, send your emails from your own SMTP (or from Amazon SES, it's cheap)
- You don't have time to change the email template everyday, so let your Product Owner do it
- You wanna be able to add this little feature, just do a pull request...- You work in a big company
- You cannot use those external services because you're not allowed to put your user's data on an external service.
- You cannot access external services because it's blocked by the proxy
- You want to customise the way you authenticate to your SMTP
- You want something user friendly enough that your manager can write the emails## Thank you!
[](https://liberapay.com/jdrouet/)
[](https://www.buymeacoffee.com/jdrouet)