Skip to main content

muttdown

Build Status

muttdown is a sendmail-replacement designed for use with the mutt email client which will transparently compile annotated text/plain mail into text/html using the Markdown standard. It will recursively walk the MIME tree and compile any text/plain or text/markdown part which begins with the sigil "!m" into Markdown, which it will insert alongside the original in a multipart/alternative container.

It's also smart enough not to break multipart/signed.

For example, the following tree before parsing:

- multipart/mixed
 |
 -- multipart/signed
 |
 ---- text/markdown
 |
 ---- application/pgp-signature
 |
 -- image/png

Will get compiled into

- multipart/mixed
 |
 -- multipart/alternative
 |
 ---- text/html
 |
 ---- multipart/signed
 |
 ------ text/markdown
 |
 ------ application/pgp-signature
 |
 -- image/png

Configuration

Muttdown's configuration file is written using YAML. Example:

smtp_host: smtp.gmail.com
smtp_port: 587
smtp_ssl: false
smtp_username: foo@bar.com
smtp_password: foo
css_file: ~/.muttdown.css
assume_markdown: false

If you prefer not to put your password in plaintext in a configuration file, you can instead specify the smtp_password_command parameter to invoke a shell command to lookup your password. The command should output your password, followed by a newline, and no other text. On OS X, the following invocation will extract a generic "Password" entry with the application set to "mutt" and the title set to "foo@bar.com":

smtp_password_command: security find-generic-password -w -s mutt -a foo@bar.com

NOTE: If smtp_ssl is set to False, muttdown will do a non-SSL session and then invoke STARTTLS. If smtp_ssl is set to True, muttdown will do an SSL session from the get-go. There is no option to send mail in plaintext.

The css_file should be regular CSS styling blocks; we use pynliner to inline all CSS rules for maximum client compatibility.

Muttdown can also send its mail using the native sendmail if you have that set up (instead of doing SMTP itself). To do so, just leave the smtp options in the config file blank, set the sendmail option to the fully-qualified path to your sendmail binary, and run muttdown with the -s flag

If assume_markdown is true, then all input is assumed to be Markdown by default and the !m sigil does nothing.

Installation

Install muttdown with pip install muttdown or by downloading this package and running python setup.py install. You will need the PyYAML and Python-Markdown libraries, as specified in requirements.txt. This should work with Python 3.6+.

Usage

Invoke as

muttdown -c /path/to/config -f "from_address" -- "to_address" [more to addresses...]

Send a RFC822 formatted mail on stdin.

If the config path is not passed, it will assume ~/.muttdown.yaml.

Metadata

Release files for muttdown 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muttdown 0.4.0
File Size Uploaded Provenance
muttdown-0.4.0.tar.gz 11.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for muttdown 0.4.0
File Interpreter ABI Platform
muttdown-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.7 kB

Release files / muttdown-0.4.0.tar.gz

Download URL muttdown-0.4.0.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ac3b85fba02fde632b606d99d862d44354013733251972c5afd3bbeffa8113b9
BLAKE2b-256 checksum
How to use checksums
fe0eccb2e44e566dedd98f0395266b43ac69ee3b794f2414095e0d23232d6ec3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Release files / muttdown-0.4.0-py3-none-any.whl

Download URL muttdown-0.4.0-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c9c9fa5721da9477a5b16f3622a9cd2f48198c0661c40c8c68d12fbcd63c78c
BLAKE2b-256 checksum
How to use checksums
9db7405d3fa0558f1b1c08f41b07699b0980417c629b699beb8584c89ad28aee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.3

Security for muttdown 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page