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.

3.4 KiB


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
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/

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