事情的原由是這樣的,每週都要發送工做週報,標題是須要的固定的格式(方便規則收信),好比 【工做週報】 xxx 11.20-11.24,發送和抄送也是給固定的人,企業郵箱尚未模板,因此每次發郵件都要複製粘貼標題、發送人和抄送人,只有內容是手寫,便萌發了用腳本發送郵件的想法。python
用腳本只須要第一次使用的時候配置收件人、抄送人和標題的格式,以後就只須要:ios
# 配置項
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()
複製代碼
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
bash
終端輸出:app
初始化 SMTP...
初始化 SMTP 成功
開始登錄郵箱服務...
開始發送郵件...
郵件發送成功!
複製代碼
最終只須要在腳本的圖形界面中輸入時間段和內容,而後點擊發送,美滋滋~ 之後不再用 command+C
、command+V
了oop
個人博客:iosgg.cn/ui