用 Python 写脚本发送工作周报

python基础

浏览数:1,418

2018-2-3

事情的起因是这样的,每周都要发送工作周报,标题是需要的固定的格式(方便规则收信),比如 【工作周报】 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

效果预览

终端输出:

初始化 SMTP...
初始化 SMTP 成功
开始登陆邮箱服务...
开始发送邮件...
邮件发送成功!

最终只需要在脚本的图形界面中输入时间段和内容,然后点击发送,美滋滋~ 以后再也不用 command+C 、command+V 了

协议/License

本作品 用 Python 写脚本发送工作周报 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,基于 https://iosgg.cn/2017/10/10/send-week-report-email/ 上的作品创作。

原文地址:https://iosgg.cn/2017/10/10/send-week-report-email/