Easy newsletter sending in Rust https://42l.fr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.



Easy newsletter sending in Rust.


  • Incorporates the List-Unsubscribe header to let people unsubscribe from your mailing list
  • Markdown support
  • Editable templates in HTML and plaintext
  • One mail per recipient (not using Bcc header to stuff all recipients)
  • Custom Reply-To and From headers
  • Supports receiving an encrypted email list (alpha)
  • Keep it simple: ~400 lines of Rust.


Build and use

This guide assumes you have installed Cargo and Rust stable.

Clone the repository

git clone https://git.42l.fr/neil/wassup
cd wassup

Copy the sample configuration file

cp config.toml.sample config.toml

Customize your setup.

  • Edit your configuration file : fill in your credentials
  • Edit the template files (HTML & plaintext) to your needs.
  • Fill in your email list (in the email-list.txt file by default)
  • Write your newsletter in Markdown in the content/ folder

Compile and run

cargo run --release <path_to_your_newsletter>

Replace <path_to_your_newsletter> with the file containing your freshly-written newsletter (e.g. content/example.md).

Double check your inputs and confirm. Done!

Tips and tricks

Avoiding anti-spam filters

You should check if your email is mailserver-friendly.

Before sending a mail to your mailing list, try sending it to some mail testing service.

Newsletter format

  • Your newsletter file should be written in Markdown and saved in the content/ folder.
    • This measure allows you to keep a trace of all the newsletter emails you sent.
  • The first line of the file is the newsletter title.
  • The second line of the file is the newsletter subtitle.
  • Your newsletter will be formatted in Markdown for HTML emails, and will not be formatted for plaintext emails.
    • Ensure that your plaintext newsletter is still readable without formatting, notably by using link references.


You can use the following variables in the templates:

  • {{TITLE}}: The newsletter title, first line of your newsletter file.
  • {{SUBTITLE}}: The newsletter subtitle, second line of your newsletter file.
  • {{HTML_CONTENT}}: The markdown formatted version of your newsletter file.
  • {{PLAINTEXT_CONTENT}}: The plaintext version of your newsletter file.
  • {{UNSUBSCRIBE}}: Your unsubscribe email address, as specified in your config.toml (unsubscribe_email).
  • {{REPLY_TO}}: Your reply-to email address, as specified in your config.toml (reply_to).

Email address encryption?

This feature has been implemented for 42l‘s mailing needs: all the emails are encrypted server-side (RSA).

There is probably no other use case of that feature, so leave is_encrypted_addresses to false and don't bother about email_privkey.

About this software

This software has been made for the needs of the Association 42l and maintained by neil.

It is licensed under the MPL-2.0 license.

It isn't planned to add new features aside long-term maintainance, but if you have ideas and want to contribute, feel free to create issues and pull requests so we can improve it together.

Contact - Donate