File: README.md

package info (click to toggle)
muttdown 0.4.0-4
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 204 kB
  • sloc: python: 620; makefile: 5; sh: 3
file content (86 lines) | stat: -rw-r--r-- 3,408 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
muttdown
========

[![Build Status](https://github.com/Roguelazer/muttdown/actions/workflows/ci.yml/badge.svg)](https://github.com/Roguelazer/muttdown/actions/workflows/ci.yml)

`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`.




[Markdown]: http://daringfireball.net/projects/markdown/
[YAML]: http://yaml.org
[PyYAML]: http://pyyaml.org
[Python-Markdown]: https://pypi.python.org/pypi/Markdown
[mutt]: http://www.mutt.org
[pynliner]: https://github.com/rennat/pynliner