用 Python 寫指令碼傳送工作週報

wxiubin發表於2017-12-19

事情的起因是這樣的,每週都要傳送工作週報,標題是需要的固定的格式(方便規則收信),比如 【工作週報】 xxx 11.20-11.24,傳送和抄送也是給固定的人,企業郵箱還沒有模板,所以每次發郵件都要複製貼上標題、傳送人和抄送人,只有內容是手寫,便萌發了用指令碼傳送郵件的想法。

用指令碼只需要第一次使用的時候配置收件人、抄送人和標題的格式,之後就只需要:

  1. 雙擊指令碼檔案
  2. 輸入時間,如 11.20-11.24
  3. 輸入週報內容

配置

# 配置項
from_addr 	= 'wangxiubin@bbbbbbbb.com' # 傳送方郵箱
password 	= 'passMhr22i6Uword' 		# 傳送方郵箱的密碼(企業郵箱-設定-客戶端專用密碼)
to_addr 	= 'abcdefg@bbbbbbbb.com' 	# 收件人郵箱
cc_addr 	= 'abcdrfghij@bbbbbbbb.com'	# 抄送人郵箱

from_name	= '王修斌'					# 發件人姓名

# QQ 企業郵箱不用修改
smtp_addr 	= 'smtp.exmail.qq.com'
smtp_port 	= 465
複製程式碼

構建郵件

def _build_msg(content,date):
	msg = MIMEText(content, 'plain', 'utf-8')
	msg['From'] 	= _format_addr('%s <%s>' % (from_name, from_addr) )
	msg['To'] 		= _format_addr( 'zhuyue <%s>' % to_addr )
	msg['CC'] 		= _format_addr( 'bplus-ios <%s>' % cc_addr )
	msg['Subject'] 	= Header('【B+iOS週報】 %s %s' % (from_name, date), 'utf-8').encode()
	return msg

複製程式碼

傳送郵件

def send_email(msg):
	print
	try:
		print '初始化 SMTP...'
		server = smtplib.SMTP_SSL(smtp_addr, smtp_port)
		print '初始化 SMTP 成功'
		# server.set_debuglevel(1)
		print '開始登陸郵箱服務...'
		server.login(from_addr, password)
		print '開始傳送郵件...'
		server.sendmail(from_addr, [to_addr], msg.as_string())
		print '郵件傳送成功!'
	except server.SMTPException,e:
	    print '郵件傳送失敗 %s' % e
	finally:
	    server.quit()
複製程式碼

GUI

def sendEmailCommand():
	
	input_date = app.dateInput.get()
	msg_content = app.content.get("0.0", "end")
	send_email(_build_msg(msg_content, input_date))


class Application(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
    	self.header = Frame()
        self.dateLabel = Label(self.header, text='週報標題日期(如 11.20-11.24):')
        self.dateLabel.grid(row=0,column=0)
        self.dateInput = Entry(self.header)
        self.dateInput.grid(row=0,column=1)
        self.sendButton = Button(self.header, text='傳送', command=sendEmailCommand)
        self.sendButton.grid(row=0,column=2)
        self.content = Text(self,padx=10)
        self.content.insert(END, '本週任務:\n\n下週任務:\n\n風險評估:\n')
        self.content.pack()
    	self.header.pack()


app = Application()
# 設定視窗標題:
app.master.title('傳送週報郵件')
# 主訊息迴圈:
app.mainloop()
複製程式碼

使用

cd 指令碼目錄
python GUI.py
複製程式碼

或者修改名稱 GUI.command 方便雙擊開啟。 執行時提示許可權不足可在終端執行 chmod +x GUI.command

效果預覽

用 Python 寫指令碼傳送工作週報

終端輸出:

初始化 SMTP...
初始化 SMTP 成功
開始登陸郵箱服務...
開始傳送郵件...
郵件傳送成功!
複製程式碼

最終只需要在指令碼的圖形介面中輸入時間段和內容,然後點選傳送,美滋滋~ 以後再也不用 command+Ccommand+V

我的部落格:iosgg.cn/

相關文章