charted's email service built in Rust that can be connected via gRPC
email-service is a small microservice to help transfer emails towards other people without trying to implement it in different languages. This is used in charted-server for member invitations, passwordless authentication, and more.
Starting in v0.2.0, you can now use Git to host your templates and the service will pull them into the filesystem and keep track of them once you start sending users emails!
Note You can still host your templates on the filesystem, just use the
templates.fsobject instead.
To use Git, you must need to have it installed on your system (as the service will require libgit2 to pull them), and you can set the templates.git.repository to git://[server]/[owner]/[repo]:
templates:
git:
repository: git://github.com/charted-dev/email-templates
directory: ./dist
branch: mainThe server will pull the repository in /var/lib/noelware/charted/emails/templates (if on Docker if templates.directory is not on the disk), or in the templates.directory directory.
To use the SSH protocol for Git, you will need to have the keys available on the filesystem. You can use the templates.git.ssh object to do so:
templates:
git:
repository: git://github.com/charted-dev/email-templates
directory: ./dist
branch: main
ssh:
username: noel # some other username...
keys:
- ~/.ssh/id_rsaTo use the microservice with Docker, you will need to have the Docker Engine or Docker Desktop installed on your machine. Once you have Docker installed, you can pull the Docker image from Noelware's container registry.
The image consists around multiple tags that are suited for your environment. We build the images with the linux/amd64 and linux/arm64 architectures.
latest,nightly- The latest versions for each channel (latestfor the stable channel,nightlyfor the nightly channel)alpine- This tag runs this service with the Alpine image instead of Debian, which is recommended for production environments since it's more compat and smaller.{version},{version}-nightly- The {version} placeholder is for any specific version of this service to run.{version}-alpine- Similarly to the stockalpineimage tag, but uses a specific version of this microservice to run.
As this service doesn't hold any persistence, we will not be requiring it and we do not need any external databases or any other service. Now, we can begin pulling the image from the respected registry:
$ docker pull cr.noelware.cloud/charted/emailsNow, we can run the container:
$ docker run -d -p 32121:32121 --name emails cr.noelware.cloud/charted/emailsThis repository also comes with a pre-ready docker-compose.yml deployment that can be easily fetched:
# Linux/macOS - cURL
$ curl -Lo docker-compose.yml https://raw.githubusercontent.com/charted-dev/email-service/main/docker-compose.yml
# Windows with PowerShell
$ irm https://raw.githubusercontent.com/charted-dev/email-service/main/docker-compose.yml | Set-Content -Path ./docker-compose.ymlemail-service is released under the Apache 2.0 License with love by Noelware, LLC.! 🐻❄️💜