Python小工具: 發個周報郵件給老闆
緣起: 新跳槽到一家公司, 沒想到第一個挑戰居然是每周都要發周報. 告訴老闆這周都幹了些什麼和下周準備幹什麼. 我記性不好, 常常忘事兒. 所以很多時候周報都會忘記發送. 於是, 就決定寫一個小工具好了.
Github: Weekday 小工具
提出目標:
- 我想有一個工具能發郵件
目標細化
- SMTP發送郵件, 用smtplib
- 讀取配置文件
- 發件人
- 收件人
- 抄送到哪些人
- 我的賬戶, 密碼, 昵稱
- 參數化命令行, 用argparse
- 支持markdown to HTML
腦補使用方式
簡單使用方式
cmd -a "工作內容" -p # 列印successn
複雜使用
cmd -e -p # 激活vim, 然後:wq之後繼續cmd執行, 就向git commit -a, 不過要列印successn
忘了自己寫的程序怎麼用
cmd -h # 列印幫助信息n
設計程序
有一個臨時文件, 用來存放記錄. 每次發送郵件之後, 將臨時文件歸檔處理.
# 臨時文件, 存在~/.weekday/current.rpn[global]neditor = vimn[to]nemail = ncc = n[from]nemail = npassword = nnickname = n[SMTP]nhost = smtp.exmail.qq.comn
能在python腳本在執行時, 讀去到這個配置文件
# 獲取配置項示例nimport ConfigParsernconfig = ConfigParser.ConfigParser()nconfig.readfp(open(文件名))ndefaultEditor = confg.get(global, editor) # 返回vimn
可以解析在執行命令時傳入的參數
import argparsenparser = argparse.ArgumentParser(n description=Tell your leader what you did this week)n# define command line parametersnparser.add_argument(-v, --version,n action=store_true,n help=show the version information)nparser.add_argument(-e, --edit,n action=store_true,n help=open default editor for editing report)nargs = parser.parse_args()nprint argsn
準備發送郵件, 先把markdown轉成HTML, 然後使用smtplib發送郵件.
import smtplibnimport mistunenfrom email.mime.text import MIMETextncontent = mistune.markdown(content, escape=True, hard_wrap=True)nmsg = MIMEText(content, html, utf-8)nmsg[Subject] = u工作周報 %srn % datenmsg[From] = hFromnmsg[To] = hTonmsg[Cc] = hCcnsmtp = smtplib.SMTP(conf[host])nsmtp.login(conf[from_email], conf[password])nsmtp.sendmail(conf[from_email],n TO_ADDR + CC_ADDR,n msg.as_string())nsmtp.close()n
開始寫代碼
細分功能實現的關鍵代碼都已經整理好了. 現在只需要通過一串邏輯將她們聯繫起來. 看上去就能完成目標了.
# main.pyndef main():n args = loadArguments()n if args.version:n print DESCn if args.append:n append(args.append, tmpFileName)n // ... other code ...nif __name__ == __main__:n main()n
Let』s go
python main.py -a Hello -pn
最後只需要配合crontab工具, 就可以實現周期性定時發送了.
# crontab -lnSHELL=/bin/zshnPATH=/usr/local/binnHOME=/Users/qiuwein# run tasksn# minute hour day month week commandn0 18 * * 5 wp -pn
原文:Python小工具: 發個周報郵件給老闆
Good Goodbye-Linkin Park/Pusha T/Stormzy
推薦閱讀:
※如何真正零基礎入門Python?(第一節)
※VisPy 中文文檔:簡介與安裝
※[2] Python變數
※如何用100行Python代碼做出魔性聲控遊戲「八分音符醬」
※爬蟲入門到精通-headers的詳細講解(If-modified-since)
TAG:Python |