3.4 KiB
wassup
Easy newsletter sending in Rust.
Features
- 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
andFrom
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.
Templates
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 yourconfig.toml
(unsubscribe_email
).{{REPLY_TO}}
: Your reply-to email address, as specified in yourconfig.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.