一个简单的命令行邮件合并工具
mailmerge的Python项目详细描述
邮件合并
==
[![pypi](https://img.shields.io/pypi/v/mailmerge.svg)(https://pypi.org/project/mailmerge/)
[![构建状态](https://travis-ci.com/awdeorio/mailmerge.svg?branch=develop)(https://travis ci.com/awdeorio/mailmerge)
命令行邮件合并工具。
`mail merge`使用纯文本文件和[jinja2模板引擎](http://jinja.pocoo.org/docs/latest/templates/)。
**示例](高级模板示例)
-[HTML格式](HTML格式)
-[标记格式](标记格式)
-[附件](附件)
-[贡献](贡献)
-[确认](确认)
快速启动
``控制台
$pip安装mailmerge
$mailmerge
```
`mailmerge'将指导您完成此过程。别担心,默认情况下它不会发送真正的电子邮件。
或者,请参阅开发安装说明。
``控制台
$sudo pip install mailmerge
```
然后,它将显示如何在发送真正的电子邮件之前对其进行测试。
和config
`` console
$mailmerge--sample
创建示例模板email mailmerge_template.txt
创建示例数据库mailmerge_database.csv
创建示例配置文件mailmerge_server.conf
编辑这些文件,然后再次运行mailmerge,编辑smtp服务器配置mailmerge server.conf,默认设置为gmail。请务必更改您的用户名。如果使用2因素身份验证,则可能需要设置一次性密码以供应用程序使用。` mailmerge'将给出一个错误,该错误的url指向右侧的gmail支持页面。其他配置示例见"mailmerge戋server.conf"的注释。
```
[smtp戋server]
host=smtp.gmail.com
port=465
security=ssl/tls
username=your戋username戋here
```
` subject和from字段是必需的。其余部分是消息的主体。使用{{}来指示将从数据库中读取的自定义参数。例如,`{email}`将从"mailmerge_database.csv"的"email"列中填写。
```
到:{{email}
主题:testing mailmerge
来自:my self<;my@mydomain.com>;
hi,{name},
您的号码是{{number}。
````
这有助于测试。
```
电子邮件、姓名、号码
我自己@mydomain.com,"我自己",17
bob@bobdomain.com,"bob",42
````
试运行
首先,试运行一封电子邮件。这将填写第一封电子邮件的模板字段并将其打印到终端。
``控制台
$mailmerge--试运行--限制1
>;>邮件0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
hi myself,
您的号码是17。
若要删除限制,请使用--no limit选项。
>;>;这是一次试运行。要发送消息,请使用--no dry run选项。
```
如果这看起来正确,请尝试第二次dry run,这次所有收件人都使用--no limit`选项。
``控制台
$mailmerge--dry run--no limit
>;消息0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
hi,myself,
您的号码是17。
>;发送消息0 dry run
>;消息1
收件人:bob@bobdomain.com
主题:testing mailmerge
发件人:my self<;myself@mydomain.com>;
hi,bob,
>您的号码是42。
>;发送消息1 dry run
>;这是一次dry run。要发送邮件,请使用--no dry run选项。
```
回想一下,您将自己添加为第一个电子邮件收件人。
``控制台
$mailmerge--无试运行--限制1
>;>邮件0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
嗨,我自己,
您的号码是17。
>;>;已发送邮件0
>;>;限制为1封邮件。要删除限制,请使用--no limit选项。
```
如果一切看起来正常,那么是时候发送所有邮件了。
我自己,
您的号码是17。
>;>向:bob@bobdomain.com发送消息0
>;
>;消息1
发送消息1
```
高级模板示例
此示例将向学生发送进度报告。该模板使用了[jinja2模板引擎文档](http://jinja.pocoo.org/docs/latest/templates/)的更多高级功能来定制给学生的消息。
来自:我的我自己<;我自己@mydomain.com>;
亲爱的{{{name}},
这封电子邮件包含了我们的成绩记录,eecs 280的成绩,以及估计的字母成绩。
项目1:{{{{{p1}}
>项目2:{{{p2}
>项目3:{{{{p3}}
>期中考试:{{{{期中考试{{{中考试}
是的时间,你估计的字母成绩是{{grade}。
{%首先,你必须交出所有的作业。参加讲座和讨论部分。尽早开始编程作业并寻求帮助。最后,制定一个策略来帮助你为期末考试做好准备。
好消息是我们已经完成了课程成绩的一半,所以有机会解决这个问题。其他教授和我很高兴在办公时间一起讨论策略。
{%elif grade in["d+","d","d-","e","f"]-%}
我写这篇文章是因为我很关心你在eecs 280的成绩。我担心的是,如果你的成绩继续保持目前的趋势,你将无法通过这门课程。
如果你打算继续这门课程,我敦促你在办公时间见你的老师,讨论下学期的计划。否则,如果你打算退学,请咨询你的学术顾问。
{%endif-%}
`````
期中,年级
我自己@mydomain.com,"我自己",100100100100,A+
边界@fixme.com,"borderline name",50,50,50,50,c-
failing@fixme.com,"failing name",0,0,0,0,f
`````
>;邮件0
收件人:my self@mydomain.com
主题:EECS 280期中进度报告
发件人:myself<;myself@mydomain.com>;
亲爱的我自己,
这封电子邮件包含了我们对您的EECS 280成绩的记录,以及估计的字母等级。
project 1:100
project 2:100
project 3:100
期中考试:100
此时,您的估计字母等级为A+。
>;>;发送消息0 dry run
>;>;限制为1条消息。若要删除限制,请使用--no limit选项。
>;>;这是一次试运行。要发送邮件,请使用--no dry run选项。
```
\html格式化
mailmerge支持html格式化。
在邮件标题下添加"content type:text/html",然后以"<;html>;"开始您的邮件。
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` mailmerge ` ` ` ` ` ` `
主题:testing mailmerge
发件人:my self<;my@mydomain.com>;
内容类型:text/html
<;
<;lt;lt;lt;lt;lt;lt;p>;lt;p>;您好,{{{name}}},<;p>;
>
<;p>;您的号码是{{{{}}}。<;p>;lt;p>;lt;p>;
此示例演示如何在同一消息中同时提供html和纯文本版本。用户的邮件阅读器可以选择其中一个。
boundary="outer boundary"
这是一条mime编码的消息。如果你看到这个,你的邮件读卡器已经过时了。
--外部边界
内容类型:text/plain;charset=us ascii
hi,{{name},
您的号码是{{number}。
--内边界
>内容类型:文本/html;charset=us ascii
内容处理:内联
>内容id:<;body@here>;
>
<;p>;由<;a href="https://github.com/awdeorio/mailmerge">;邮件合并<;/a>;<;/p>;
<;/body>;
<;/html>;发送;
``
MailMerge会将标记呈现为HTML,然后在多部分邮件中同时包含HTML和纯文本版本。收件人的邮件读取器可以选择任一格式。
*星号*
-强强调,也称为粗体,带有**星号**。
-将强调与**星号和下划线组合在一起。
-像这样的无序列表。
-带数字的有序列表:
1。项目1
2.项目2
-使用"backticks"预格式化文本。
-一些[超链接](http://bit.ly/eecs485-wn19-p6)如何?
这是一个标题。
和另一个标题。
这是一张没有附上电子邮件的图片:
![未附加Python徽标](http://pluspng.com/img png/python-logo-png-open-2000.png)
````
mailmerge
发件人:my self<;myself@mydomain.com>;
附件:file1.docx
附件:../file2.pdf
附件:/z/shared/{{name}}}u submission.txt
hi,{{name},
此电子邮件包含三个附件。
pro tip:使用jinja根据您的数据库!
```
如果附件文件名包含模板,最好使用"--无限制"标志进行试运行。
``控制台
$mailmerge
>;消息0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
嗨,我自己,
此电子邮件包含三个附件。
专业提示:使用Jinja根据您的数据库自定义附件!
>;>ascii编码
>;>attached/users/awdeorio/documents/test/file1.docx
>;>attached/users/awdeorio/documents/file2.pdf
>;>attached/z/shared/myself\submission.txt
>; >;>这是一次干跑。要发送消息,请使用--no dry run选项。
```
查看[投稿指南](contributing.md)。
==
[![pypi](https://img.shields.io/pypi/v/mailmerge.svg)(https://pypi.org/project/mailmerge/)
[![构建状态](https://travis-ci.com/awdeorio/mailmerge.svg?branch=develop)(https://travis ci.com/awdeorio/mailmerge)
命令行邮件合并工具。
`mail merge`使用纯文本文件和[jinja2模板引擎](http://jinja.pocoo.org/docs/latest/templates/)。
**示例](高级模板示例)
-[HTML格式](HTML格式)
-[标记格式](标记格式)
-[附件](附件)
-[贡献](贡献)
-[确认](确认)
快速启动
``控制台
$pip安装mailmerge
$mailmerge
```
`mailmerge'将指导您完成此过程。别担心,默认情况下它不会发送真正的电子邮件。
或者,请参阅开发安装说明。
``控制台
$sudo pip install mailmerge
```
然后,它将显示如何在发送真正的电子邮件之前对其进行测试。
和config
`` console
$mailmerge--sample
创建示例模板email mailmerge_template.txt
创建示例数据库mailmerge_database.csv
创建示例配置文件mailmerge_server.conf
编辑这些文件,然后再次运行mailmerge,编辑smtp服务器配置mailmerge server.conf,默认设置为gmail。请务必更改您的用户名。如果使用2因素身份验证,则可能需要设置一次性密码以供应用程序使用。` mailmerge'将给出一个错误,该错误的url指向右侧的gmail支持页面。其他配置示例见"mailmerge戋server.conf"的注释。
```
[smtp戋server]
host=smtp.gmail.com
port=465
security=ssl/tls
username=your戋username戋here
```
` subject和from字段是必需的。其余部分是消息的主体。使用{{}来指示将从数据库中读取的自定义参数。例如,`{email}`将从"mailmerge_database.csv"的"email"列中填写。
```
到:{{email}
主题:testing mailmerge
来自:my self<;my@mydomain.com>;
hi,{name},
您的号码是{{number}。
````
这有助于测试。
```
电子邮件、姓名、号码
我自己@mydomain.com,"我自己",17
bob@bobdomain.com,"bob",42
````
试运行
首先,试运行一封电子邮件。这将填写第一封电子邮件的模板字段并将其打印到终端。
``控制台
$mailmerge--试运行--限制1
>;>邮件0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
hi myself,
您的号码是17。
若要删除限制,请使用--no limit选项。
>;>;这是一次试运行。要发送消息,请使用--no dry run选项。
```
如果这看起来正确,请尝试第二次dry run,这次所有收件人都使用--no limit`选项。
``控制台
$mailmerge--dry run--no limit
>;消息0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
hi,myself,
您的号码是17。
>;发送消息0 dry run
>;消息1
收件人:bob@bobdomain.com
主题:testing mailmerge
发件人:my self<;myself@mydomain.com>;
hi,bob,
>您的号码是42。
>;发送消息1 dry run
>;这是一次dry run。要发送邮件,请使用--no dry run选项。
```
回想一下,您将自己添加为第一个电子邮件收件人。
``控制台
$mailmerge--无试运行--限制1
>;>邮件0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
嗨,我自己,
您的号码是17。
>;>;已发送邮件0
>;>;限制为1封邮件。要删除限制,请使用--no limit选项。
```
如果一切看起来正常,那么是时候发送所有邮件了。
我自己,
您的号码是17。
>;>向:bob@bobdomain.com发送消息0
>;
>;消息1
发送消息1
```
高级模板示例
此示例将向学生发送进度报告。该模板使用了[jinja2模板引擎文档](http://jinja.pocoo.org/docs/latest/templates/)的更多高级功能来定制给学生的消息。
来自:我的我自己<;我自己@mydomain.com>;
亲爱的{{{name}},
这封电子邮件包含了我们的成绩记录,eecs 280的成绩,以及估计的字母成绩。
项目1:{{{{{p1}}
>项目2:{{{p2}
>项目3:{{{{p3}}
>期中考试:{{{{期中考试{{{中考试}
是的时间,你估计的字母成绩是{{grade}。
{%首先,你必须交出所有的作业。参加讲座和讨论部分。尽早开始编程作业并寻求帮助。最后,制定一个策略来帮助你为期末考试做好准备。
好消息是我们已经完成了课程成绩的一半,所以有机会解决这个问题。其他教授和我很高兴在办公时间一起讨论策略。
{%elif grade in["d+","d","d-","e","f"]-%}
我写这篇文章是因为我很关心你在eecs 280的成绩。我担心的是,如果你的成绩继续保持目前的趋势,你将无法通过这门课程。
如果你打算继续这门课程,我敦促你在办公时间见你的老师,讨论下学期的计划。否则,如果你打算退学,请咨询你的学术顾问。
{%endif-%}
`````
期中,年级
我自己@mydomain.com,"我自己",100100100100,A+
边界@fixme.com,"borderline name",50,50,50,50,c-
failing@fixme.com,"failing name",0,0,0,0,f
`````
>;邮件0
收件人:my self@mydomain.com
主题:EECS 280期中进度报告
发件人:myself<;myself@mydomain.com>;
亲爱的我自己,
这封电子邮件包含了我们对您的EECS 280成绩的记录,以及估计的字母等级。
project 1:100
project 2:100
project 3:100
期中考试:100
此时,您的估计字母等级为A+。
>;>;发送消息0 dry run
>;>;限制为1条消息。若要删除限制,请使用--no limit选项。
>;>;这是一次试运行。要发送邮件,请使用--no dry run选项。
```
\html格式化
mailmerge支持html格式化。
在邮件标题下添加"content type:text/html",然后以"<;html>;"开始您的邮件。
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` mailmerge ` ` ` ` ` ` `
主题:testing mailmerge
发件人:my self<;my@mydomain.com>;
内容类型:text/html
<;
<;lt;lt;lt;lt;lt;lt;p>;lt;p>;您好,{{{name}}},<;p>;
>
<;p>;您的号码是{{{{}}}。<;p>;lt;p>;lt;p>;
boundary="outer boundary"
这是一条mime编码的消息。如果你看到这个,你的邮件读卡器已经过时了。
--外部边界
内容类型:text/plain;charset=us ascii
hi,{{name},
您的号码是{{number}。
--内边界
>内容类型:文本/html;charset=us ascii
内容处理:内联
>内容id:<;body@here>;
>
<;p>;由<;a href="https://github.com/awdeorio/mailmerge">;邮件合并<;/a>;<;/p>;
<;/body>;
<;/html>;发送;
``
MailMerge会将标记呈现为HTML,然后在多部分邮件中同时包含HTML和纯文本版本。收件人的邮件读取器可以选择任一格式。
*星号*
-强强调,也称为粗体,带有**星号**。
-将强调与**星号和下划线组合在一起。
-像这样的无序列表。
-带数字的有序列表:
1。项目1
2.项目2
-使用"backticks"预格式化文本。
-一些[超链接](http://bit.ly/eecs485-wn19-p6)如何?
这是一个标题。
和另一个标题。
这是一张没有附上电子邮件的图片:
![未附加Python徽标](http://pluspng.com/img png/python-logo-png-open-2000.png)
````
mailmerge
发件人:my self<;myself@mydomain.com>;
附件:file1.docx
附件:../file2.pdf
附件:/z/shared/{{name}}}u submission.txt
hi,{{name},
此电子邮件包含三个附件。
pro tip:使用jinja根据您的数据库!
```
如果附件文件名包含模板,最好使用"--无限制"标志进行试运行。
``控制台
$mailmerge
>;消息0
发送给:my self@mydomain.com
主题:测试mailmerge
发件人:myself<;myself@mydomain.com>;
嗨,我自己,
此电子邮件包含三个附件。
专业提示:使用Jinja根据您的数据库自定义附件!
>;>ascii编码
>;>attached/users/awdeorio/documents/test/file1.docx
>;>attached/users/awdeorio/documents/file2.pdf
>;>attached/z/shared/myself\submission.txt
>;
```
查看[投稿指南](contributing.md)。