Skip to main content

Sendmail replacement that compiles markdown into HTML

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

muttdown-0.4.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

muttdown-0.4.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file muttdown-0.4.0.tar.gz.

File metadata

  • Download URL: muttdown-0.4.0.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for muttdown-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ac3b85fba02fde632b606d99d862d44354013733251972c5afd3bbeffa8113b9
MD5 8dc97af4a490e0fb9b8c2eec3f048901
BLAKE2b-256 fe0eccb2e44e566dedd98f0395266b43ac69ee3b794f2414095e0d23232d6ec3

See more details on using hashes here.

File details

Details for the file muttdown-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: muttdown-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for muttdown-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c9c9fa5721da9477a5b16f3622a9cd2f48198c0661c40c8c68d12fbcd63c78c
MD5 733e39bbe264d92088d832578a577dc8
BLAKE2b-256 9db7405d3fa0558f1b1c08f41b07699b0980417c629b699beb8584c89ad28aee

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page