600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python群发邮箱软件_maily:命令行邮件(批量)发送工具

python群发邮箱软件_maily:命令行邮件(批量)发送工具

时间:2024-01-28 19:40:00

相关推荐

python群发邮箱软件_maily:命令行邮件(批量)发送工具

实在是觉得Linux下的mail和mailx工具难用,太复杂,于是自己用Python写了个简单的,maily,练练手。

maily分两个模式,inline和infile,即两个subcommand。

inline,发送邮件的所有参数都在命令行输入,不会去读取任何配置文件,除了命令行指定的一个或多个附件。

infile,发送邮件的所有参数都从一个JSON配置文件中读出来,可批量发送。JSON文件中可以设置多个邮件发送账号,每个发送账号可以带多个Email消息内容。(需求来自公司每个月要给员工发送工资条)

inline子命令

既然所有参数都在命令,命令就一定很长,没办法,不过有些参数有默认值,可以不输入。

$ python3 maily.py inline --subject a_title --content test_content

--to to@ --fromaddr from@ --passwd your_password

--smtp

还有更多的参数:

-a,添加附件;

--cc和--bcc,添加抄送和密送名单;

还有 --port, --tlayer 等参数,具体请看:python3 maily.py inline -h

python3 maily.py inline -h

值得一说的是,maily可以接收通过管道过来的数据作为 --content 参数的内容,比如你可以在命令行这样:

$ python3 maily.py inline ... < content.txt

$ echo 'your content' | python3 maily.py inline ...

--content 参数内容中的 \n,就是换行。而通过echo命令过来的内容,如果不使用-e参数,\n就是\n两个字符。

--contype 可以是 html,此时 --content 的内容就是一串自己定义的html格式的字符串。

infile子命令

$ python3 maily.py infile msg.json

infile模式的命令行就很简单了,只需要带上一个JSON格式的文件即可。repo中提供了一个简单的msg.json文件作为示例。

msg.json的内容如下:

$ cat msg.json

[

{

"fromaddr": "account@",

"passwd": "password",

"server": "",

"msg": [

{

"subject": "send to me",

"to": [

"to@"

]

}

]

},

{

"fromaddr": "account@",

"passwd": "password",

"server": "",

"port": 587,

"connect": "tls",

"timeout": 3,

"debuginfo": false,

"interval": 3,

"msg": [

{

"subject": "test json email 11",

"to": [

"to1@",

"to2@"

],

"cc": [],

"contype": "plain",

"content": [

"\u4eba\u751fhahaha...lalala...\n",

"This is second line,\n",

"third line..."

]

},

{

"subject": "test json file 12",

"to": [

"tototo@"

],

"cc": [

"cc@"

],

"bcc": [],

"contype": "html",

"content": [

"

2222...hahaha...lalala..."

],

"attachment": [

"/home/pi/test/hh1.c",

"/home/pi/test/hh1"

]

}

]

}

]

应该都能看懂哈。。。

整体是一个list,每个smtp账号对应一个object,object内用msg这个list来包含一个或多个Email!其中有一些item是optional的,可以不出现,maily会直接使用默认值。

interval这个参数表示,对于每一个账号,每发送一封Email后的间隔时间。(也许能够有一点点anti-spam的效果)

我在公司制作的发工资条系统是这样的:用一个独立的工具,将财务那边的Excel文件转换成maily能够识别的JSON格式,--contype 用 html,--content 内有一个表格......最后用maily跑一遍即可。不管财务制作的工资Excel文件的格式是什么样的,只需要调整那个用于转换的工具,而maily保持不变。

版本

10月28日:V0.21

更多对于infile模式的输入检查,可以更容易发现格式方面的问题;

infile模式下,tpye修改为contype,与inline模式对齐;

10月9日:V0.20

对infile子命令输入的json文件最更多的检查;

content修改为一个string list;

9月8日:V0.19

bugfix版本

8月21日:V0.18

增加infile子命令

重构部分代码,bugfix

7月24日:V0.17

在inline子命令中,增加--tlayer选项,支持自定义port

bugfix

7月22日:V0.16

第1个版本,提供inline子命令。

-- EOF --

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。