将标记编译为HTML的Sendmail替换

muttdown的Python项目详细描述


低声说

Build Status

muttdown是一个sendmail替换程序,设计用于mutt电子邮件客户端,该客户端将使用Markdown标准透明地将带注释的text/plain邮件编译成text/html。它将递归地遍历mime树并编译任何以sigil开头的text/plaintext/markdown部分!在标记中插入m“,它将在多部分/可选容器中与原件一起插入。

它还足够聪明,不会破坏multipart/signed

例如,解析之前的以下树:

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

将编译成

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

配置

muttdown的配置文件是使用YAML编写的。示例:

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

如果不希望在配置文件中以明文形式输入密码,可以指定smtp_password_command参数来调用shell命令来查找密码。该命令应该输出您的密码,后跟换行符,而不是其他文本。在os x上,以下调用将提取一个通用的“password”条目,应用程序设置为“mutt”,标题设置为“foo@bar.com”:

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

注意:如果smtp_ssl设置为false,则muttdown将执行非ssl会话,然后调用STARTTLS。如果smtp_ssl设置为true,则muttdown将从一开始就执行ssl会话。不能用明文发送邮件。

<^ > ^ {CD13>}应该是常规CSS样式块;我们使用pynliner来内嵌所有CSS规则以获得最大的客户端兼容性。

如果设置了muttdown,它还可以使用本机sendmail发送邮件(而不是使用smtp本身)。为此,只需将配置文件中的smtp选项留空,将sendmail选项设置为指向sendmail二进制文件的完全限定路径,并使用-s标志运行muttdown

安装

使用pip install muttdown或通过下载此包并运行python setup.py install来安装muttdown。您将需要在requirements.txt中指定的PyYAMLPython-Markdown库。

用法

调用为

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

在stdin上发送一封rfc822格式的邮件。

如果未传递配置路径,则将假定为~/.muttdown.yaml

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ProcessBuilder在使用多个参数时运行不正常   java如何使用Spring数据ORM/JPA创建EntityManagerFactory?   将Velocity宏转换为Java指令   internet上的Java TCP/IP服务器客户端通信   java为什么JDK 8允许一个局部内部类(在方法内部)访问封闭方法的非最终局部变量?   基于Java的比率算法   java应用程序在选择列表首选项时出错   java保存对象以供以后使用   java如何使用MySQL JDBC驱动程序连接Android和MySQL   java Zipkin可以用于控制台应用程序   java单击刷新Servlet页面显示重复内容   java如何递归地反转字符串数组?   java如何使用inputStream作为outputStream的文本?   java扩展令牌选择操作符   java在映射中使用通用枚举类   arraylist如何使用JAVA流从对象列表中查找平均值   windows将FileInputStream和FileOutputStream传递给ffmpeg进行转码(使用JAVEJava音频视频编码)   java Ant脚本在执行CVS签出后找不到目标   重复值情况下的java插入排序,双链表ADT   java如何在Accumulo中获取数据库查询计数