Rust implementation of catapulte email sender

Overview

Catapulte

Build Status codecov

Docker Pulls Docker Image Size (latest by date)

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

Why did we build catapulte?

Catapulte comes from the frustration of using several email providers. We used to work with products like sendgrid, mailgun, mailchimp, sendinblue, 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.

docker run -d \
  --name catapulte \
  -e SMTP_HOSTNAME=localhost \
  -e SMTP_PORT=25 \
  -e SMTP_USERNAME=optional \
  -e SMTP_PASSWORD=optional \
  -e TEMPLATE_PROVIDER=local \
  -e TEMPLATE_ROOT=/templates \
  -p 3000:3000 \
  -v /path/to/your/templates:/templates:ro \
  jdrouet/catapulte:master

Once your server started, you can simply send an email using an HTTP request.

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

You can also send attachments using a multipart request.

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

You can configure it with some environment variable and can find more information in this wiki.

If you some API specification, the Open API specification is also available.

To use it in production, we prepared a documentation on how to use Catapulte with Amazon Simple Email Service.

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!

Buy Me A Coffee

Comments
  • Is there an option to disable certificate validation when sending SMTP

    Is there an option to disable certificate validation when sending SMTP

    I am getting

    {"name":"Internal Server Error","message":"internal client error: timed out waiting for connection: network error: invalid certificate: UnknownIssuer"}

    since the certificates ca certificate in unknown in the container.

    enhancement 
    opened by guidoffm 5
  • Error r2d2 - No compatible auth mechanism

    Error r2d2 - No compatible auth mechanism

    Hi,

    When trying out catapulte using docker, I'm getting the following error message:

    catapulte_1  | [2021-05-04T11:35:41Z ERROR r2d2] No compatible authentication mechanism was found
    

    I'm using Office365 (smtp.office365.com) as SMTP server with a valid account. It uses STARTTLS for encryption/auth.

    Any idea of how to solve this?

    Thanks!

    opened by luixal 3
  • build(deps): Bump actix-web from 4.0.0-beta.5 to 4.0.0-beta.6

    build(deps): Bump actix-web from 4.0.0-beta.5 to 4.0.0-beta.6

    ⚠️ Dependabot Preview has been deactivated ⚠️

    This pull request was created by Dependabot Preview, and you've upgraded to Dependabot. This means it won't respond to dependabot commands nor will it be automatically closed if a new version is found.

    If you close this pull request, Dependabot will re-create it the next time it checks for updates and everything will work as expected.


    Bumps actix-web from 4.0.0-beta.5 to 4.0.0-beta.6.

    Release notes

    Sourced from actix-web's releases.

    actix-web: v4.0.0-beta.6

    Added

    • HttpResponse and HttpResponseBuilder structs. #2065

    Changed

    • Most error types are now marked #[non_exhaustive]. #2148

    #2065: actix/actix-web#2065 #2148: actix/actix-web#2148

    Changelog

    Sourced from actix-web's changelog.

    4.0.0-beta.6 - 2021-04-17

    Added

    • HttpResponse and HttpResponseBuilder structs. #2065

    Changed

    • Most error types are now marked #[non_exhaustive]. #2148
    • Methods on ContentDisposition that took T: AsRef<str> now take impl AsRef<str>.

    #2065: actix/actix-web#2065 #2148: actix/actix-web#2148

    Commits
    • 5a16293 prepare awc release 3.0.0-beta.5
    • b2d6b6a prepare web release 4.0.0-beta.6
    • f743e88 prepare http release 3.0.0-beta.6
    • 5747f84 bump utils to stable v3
    • 879a4cb re-export ready boilerplate macros in dev
    • 2449f25 missed one pipeline_factory
    • d8f56ee bump service to stable v2
    • 8d88a0a rename header generator macros
    • 845c02c Add responder impl for Cow<str> (#2164)
    • 64bed50 chore: update benchmaks to round 20 (#2163)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • build(deps): Bump env_logger from 0.9.3 to 0.10.0

    build(deps): Bump env_logger from 0.9.3 to 0.10.0

    Bumps env_logger from 0.9.3 to 0.10.0.

    Changelog

    Sourced from env_logger's changelog.

    [0.10.0] - 2022-11-24

    MSRV changed to 1.60 to hide optional dependencies

    Fixes

    • Resolved soundness issue by switching from atty to is-terminal

    Breaking Changes

    To open room for changing dependencies:

    • Renamed termcolor feature to color
    • Renamed atty feature to auto-color
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): Bump futures-core from 0.3.19 to 0.3.21

    build(deps): Bump futures-core from 0.3.19 to 0.3.21

    Bumps futures-core from 0.3.19 to 0.3.21.

    Release notes

    Sourced from futures-core's releases.

    0.3.21

    • Fix potential data race in FlattenUnordered that introduced in 0.3.20 (#2566)

    0.3.20

    • Fix stacked borrows violations when -Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)
    • Change FuturesUnordered to respect yielding from future (#2551)
    • Add StreamExt::{flatten_unordered, flat_map_unordered} (#2083)
    Changelog

    Sourced from futures-core's changelog.

    0.3.21 - 2022-02-06

    • Fix potential data race in FlattenUnordered that introduced in 0.3.20 (#2566)

    0.3.20 - 2022-02-06

    NOTE: This release has been yanked due to a bug fixed in 0.3.21.

    • Fix stacked borrows violations when -Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)
    • Change FuturesUnordered to respect yielding from future (#2551)
    • Add StreamExt::{flatten_unordered, flat_map_unordered} (#2083)
    Commits
    • fc1e325 Release 0.3.21
    • 20279eb FlattenUnordered: improve wakers behavior (#2566)
    • 75dca5a Fix MSRV in futures-task readme
    • 55281c8 Release 0.3.20
    • 591b982 Redefine executor and compat modules in futures crate (#2564)
    • 94b508b Basic StreamExt::{flatten_unordered, flat_map_unordered} impls (#2083)
    • dca16fa Do not auto-create PR on fork
    • a9795a9 Automatically creates PR when no_atomic_cas.rs needs to be updated
    • 4841888 Update comments in build scripts
    • 85706b6 Clean up ci/no_atomic_cas.sh
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): Bump actix-http from 3.0.0-beta.13 to 3.0.0-beta.14

    build(deps): Bump actix-http from 3.0.0-beta.13 to 3.0.0-beta.14

    Bumps actix-http from 3.0.0-beta.13 to 3.0.0-beta.14.

    Release notes

    Sourced from actix-http's releases.

    actix-http: v3.0.0-beta.14

    Changed

    • Guarantee ordering of header::GetAll iterator to be same as insertion order. #2467
    • Expose header::map module. #2467
    • Implement ExactSizeIterator and FusedIterator for all HeaderMap iterators. #2470
    • Update actix-tls to 3.0.0-rc.1. #2474

    #2467: actix/actix-web#2467 #2470: actix/actix-web#2470 #2474: actix/actix-web#2474

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): Bump actix-multipart from 0.4.0-beta.4 to 0.4.0-beta.5

    build(deps): Bump actix-multipart from 0.4.0-beta.4 to 0.4.0-beta.5

    Bumps actix-multipart from 0.4.0-beta.4 to 0.4.0-beta.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • build(deps): Bump actix-rt from 2.1.0 to 2.2.0

    build(deps): Bump actix-rt from 2.1.0 to 2.2.0

    Bumps actix-rt from 2.1.0 to 2.2.0.

    Release notes

    Sourced from actix-rt's releases.

    actix-rt: v2.2.0

    • BREAKING ActixStream::{poll_read_ready, poll_write_ready} methods now return Ready object in ok variant. #293
      • Breakage is acceptable since ActixStream was not intended to be public.

    #293: actix/actix-net#293

    Commits
    • 0ee8d03 prepare actix-tls release 3.0.0-beta.5
    • 3cf1c54 prepare actix-rt release 2.2.0
    • 4544562 Remove unused TcpConnectService (#299)
    • bb27bac Add native tls support for actix_tls::connect module (#295)
    • f9262db prevent large shutdown timeout from panicking
    • 12d3942 Remove unused types in actix-tls. Add ActixStream impl for Box<dyn Ac… (#297)
    • a3c9ebc fix rustls panic when generating dns name from ip (#296)
    • b7bfff2 add example of using multi-thread tokio runtime (#294)
    • 0c73f13 ActixStream readiness methods return Ready object (#293)
    • 945479e unvendor openssl (#292)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • build(deps): Bump async-trait from 0.1.42 to 0.1.48

    build(deps): Bump async-trait from 0.1.42 to 0.1.48

    Bumps async-trait from 0.1.42 to 0.1.48.

    Release notes

    Sourced from async-trait's releases.

    0.1.48

    • Resolve clippy items_after_statements pedantic lint in generated code (#154)

    0.1.47

    • Support for impl Trait in associated types (#152)

    0.1.46

    • Fix "mismatched types" error in function bodies that perform unsize coercion (#149)

    0.1.45

    • Resolve clippy let_unit_value pedantic lint in generated code (#147)

    0.1.44

    • Suppress clippy type_complexity lint on complex type in generated code (#145)

    0.1.43

    • Switch implementation to async blocks, which have fewer edge cases (#143, thanks @SergioBenitez)
    Commits
    • a4aab7b Release 0.1.48
    • b1d8e1a Merge pull request #155 from dtolnay/items
    • a7a4796 Reduce nesting of items_after_statements workaround
    • 6167641 Avoid items_after_statements lint in generated code
    • b3fdf43 Add regression test for issue 154
    • 926aeb5 Release 0.1.47
    • c03a0c6 Merge pull request #153 from dtolnay/impltrait
    • cc9c90b Support for impl Trait in associated type (type_alias_impl_trait)
    • 9dc0f16 Add regression test for issue 152
    • 6d3cf66 Release 0.1.46
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • build(deps): Bump handlebars from 3.5.3 to 3.5.4

    build(deps): Bump handlebars from 3.5.3 to 3.5.4

    Bumps handlebars from 3.5.3 to 3.5.4.

    Changelog

    Sourced from handlebars's changelog.

    3.5.4 - 2021-03-27

    • [Fixed] Json string literal with escape char #422
    Commits
    • 990533c (cargo-release) version 3.5.4
    • 5ba48e5 (doc) update changelog
    • f9290a6 (fix) json string literal rule
    • 086bd33 (cargo-release) start next development iteration 3.5.4-alpha.0
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • build(deps): Bump actix-http from 3.0.0-beta.3 to 3.0.0-beta.4

    build(deps): Bump actix-http from 3.0.0-beta.3 to 3.0.0-beta.4

    Bumps actix-http from 3.0.0-beta.3 to 3.0.0-beta.4.

    Release notes

    Sourced from actix-http's releases.

    actix-web: v3.0.0-beta.4

    Added

    • middleware::NormalizePath now has configurable behaviour for either always having a trailing slash, or as the new addition, always trimming trailing slashes. #1639

    Changed

    • Update actix-codec and actix-utils dependencies. #1634
    • FormConfig and JsonConfig configurations are now also considered when set using App::data. #1641
    • HttpServer::maxconn is renamed to the more expressive HttpServer::max_connections. #1655
    • HttpServer::maxconnrate is renamed to the more expressive HttpServer::max_connection_rate. #1655

    #1639: actix/actix-web#1639 #1641: actix/actix-web#1641 #1634: actix/actix-web#1634 #1655: actix/actix-web#1655

    actix-http: v3.0.0-beta.4

    Changed

    • Feature cookies is now optional and disabled by default. #1981
    • ws::hash_key now returns array. #2035
    • ResponseBuilder::json now takes impl Serialize. #2052

    Removed

    • Re-export of futures_channel::oneshot::Canceled is removed from error mod. #1994
    • ResponseError impl for futures_channel::oneshot::Canceled is removed. #1994

    #1981: actix/actix-web#1981 #1994: actix/actix-web#1994 #2035: actix/actix-web#2035 #2052: actix/actix-web#2052

    Changelog

    Sourced from actix-http's changelog.

    3.0.0-beta.4 - 2020-09-09

    Added

    • middleware::NormalizePath now has configurable behavior for either always having a trailing slash, or as the new addition, always trimming trailing slashes. #1639

    Changed

    • Update actix-codec and actix-utils dependencies. #1634
    • FormConfig and JsonConfig configurations are now also considered when set using App::data. #1641
    • HttpServer::maxconn is renamed to the more expressive HttpServer::max_connections. #1655
    • HttpServer::maxconnrate is renamed to the more expressive HttpServer::max_connection_rate. #1655

    #1639: actix/actix-web#1639 #1641: actix/actix-web#1641 #1634: actix/actix-web#1634 #1655: actix/actix-web#1655

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Gibbon-mail is a catapulte alternative project implemented in NodeJS

    Gibbon-mail is a catapulte alternative project implemented in NodeJS

    Hello,

    For information, I just added in this commit a link to Catapulte in Gibbon-mail project.

    Gibbon-mail is email sender like Catapulte implemented in NodeJS + ReactJS SPA Frontend.

    Best regards, Stéphane

    opened by stephane-klein 2
  • Please explain how the Dockerfile works

    Please explain how the Dockerfile works

    You have a two stage build in the Dockerfile.

    In stage one you copy the template folder to /code/template and run the cargo command.

    Then, in stage two, you only copy the binary file to /usr/bin/catapulte.

    You set the env variable TEMPLATE_ROOT to /templates.

    Of course there is no such /templates folder.

    I guess the templates folder from stage one is gone now.

    opened by guidoffm 6
Releases(0.4.0)
Owner
Jérémie Drouet
Rust lover, React enthusiast, senior developper producing bugs for a living
Jérémie Drouet
Pay a lightning email to send an email to the website owner

TODO USE human readable age in encryption (support "e" as backward compatible) go back to referrer or provided option save time taken to send email op

Riccardo Casatta 12 Aug 24, 2022
Visually cluster your emails by sender, domain, and more to identify waste

Postsack A high level visual overview of swaths of email TLDR! A web demo that shows how Postsack clusters a set of 10.000 fake emails Do you have man

Benedikt Terhechte 298 Dec 26, 2022
📫Himalaya: CLI email client written in Rust.

??Himalaya: CLI email client written in Rust.

Clément DOUIN 2.1k Jan 7, 2023
This app reads a csv file and sends an email with a formatted Handlebars file.

Bulkmail This app reads a csv file and sends an email with a formatted Handlebars file. This can be run on Linux for AMD64 and ARMv7. Upstream Links D

Giovanni Bassi 17 Nov 3, 2022
Automatically check for SPF misconfigurations that could result in email spoofing

SPFJack Email spoofing is dead, but misconfiguration never dies. Purpose This project is designed to take in domain names and review their SPF records

Alex (LunarCA) 2 Mar 27, 2022
Mjml - the only framework that makes responsive-email easy

MJML 4 If you're looking for MJML 3.3.X check this branch | Translated documentation | Introduction | Installation | Usage | Translated documentation

MJML 14.8k Jan 6, 2023
Implementation of mjml in rust

MRML Introduction This project is a reimplementation of the nice MJML markup language in Rust. How to use it use mrml; fn main() { match mrml::to

Jérémie Drouet 228 Dec 28, 2022
新しい IMAP client in Rust

新しい IMAP client 新しい (atarashii/new) IMAP client in Rust. It supports plain and secure connections. In progress It's under development... Usage Put thi

Alex Maslakov 39 Sep 13, 2020
Unofficial Rust library for the SendGrid API

sendgrid-rs Unofficial Rust library for the SendGrid API. This crate requires Rust 1.15 or higher as it uses a crate that has a custom derive implemen

Garrett Squire 88 Dec 27, 2022
a mailer library for Rust

lettre A mailer library for Rust NOTE: this readme refers to the 0.10 version of lettre, which is still being worked on. The master branch and the alp

lettre 1.3k Jan 4, 2023
Rust library to parse mail files

mailparse A simple parser for MIME email messages. API The primary entry point for this library is the following function: parse_mail(&[u8]) -> Re

Kartikaya Gupta (kats) 150 Dec 27, 2022
Fast and robust e-mail parsing library for Rust

mail-parser mail-parser is an e-mail parsing library written in Rust that fully conforms to the Internet Message Format standard (RFC 5322), the Multi

Stalwart Labs 158 Jan 1, 2023
mail-builder is a flexible e-mail builder library written in Rust that generates RFC5322 compliant e-mail messages

mail-builder mail-builder is a flexible e-mail builder library written in Rust that generates RFC5322 compliant e-mail messages. The library has full

Stalwart Labs 37 Dec 19, 2022
A mail suite written in rust meant to be easy to use.

Erooster A mail suite written in rust meant to be easy to use. Getting started Currently the setup is quite rough. You need some certificates for your

Marcel 33 Dec 19, 2022
A rewrite of the server side parts of emersion/go-smtp package into rust.

rust-smtp-server A rust smtp server library. It's mainly a rewrite of the server side parts of the emersion/go-smtp library. Features Usage Add this t

Nick Westendorf 3 Apr 26, 2023
An ESMTP server library written in Rust.

rs-smtp An ESMTP server library written in Rust. Features ESMTP client & server implementing RFC 5321 Support for SMTP AUTH and PIPELINING UTF-8 suppo

DUNEF 3 Apr 15, 2023
E-mail delivery library for Rust with DKIM support

mail-send mail-send is a Rust library to build, sign and send e-mail messages via SMTP. It includes the following features: Generates e-mail messages

Stalwart Labs 165 Oct 23, 2023
Check if an email address exists without sending any email, written in Rust.

Check if an email address exists without sending any email, written in Rust.

Reacher 3.5k Dec 31, 2022
Pay a lightning email to send an email to the website owner

TODO USE human readable age in encryption (support "e" as backward compatible) go back to referrer or provided option save time taken to send email op

Riccardo Casatta 12 Aug 24, 2022
Visually cluster your emails by sender, domain, and more to identify waste

Postsack A high level visual overview of swaths of email TLDR! A web demo that shows how Postsack clusters a set of 10.000 fake emails Do you have man

Benedikt Terhechte 298 Dec 26, 2022