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

我的博客:iosgg.cn/

用 Python 写脚本发送工作周报相关推荐

  1. python写的脚本怎么用,如何用python写脚本

    如何用python写脚本 以Python2.7操作为例:1.首先需要打开电脑桌面,按开始的快捷键,点击Python2.7如图所示的选项进入. 相关推荐:<Python入门教程>2.打开之后 ...

  2. python备份发包脚本_用Python写脚本,实现完全备份和增量备份的示例

    需求: 在/root/backup下面有两个文件夹dst和src.要求在周一的时候进行完全备份,其余日子进行增量备份.从src备份到dst. 思路及关键点: 建立一个文件,以字典方式记录src的文件名 ...

  3. python写脚本入门-学习Python的教程?:python 脚本菜鸟教程

    学习Python的教程? Python作为一门面向对象的性语言,其实它的学习也很简单 - 配置 - Python基础(语法..数据类型.高级变量.函数.Python高级特性) - 面向对象编程.面向对 ...

  4. 用python写脚本看什么书-终于知晓python编写脚本入门教程

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...

  5. 用python写脚本看什么书-你用 Python 写过哪些有趣的脚本?

    我整理三个还能见人的代码,链接放在最下方. 代码一般是放在github上,源码分析在博客中,每个代码会有时间线,大概说明是什么时期写的,毕竟一开始水平是相当菜..后期则是越来越规范而且优雅的代码,这种 ...

  6. 怎么用python写脚本刷金币_用Python写王者荣耀刷金币脚本

    王者荣耀很多朋友都想买脚本和挂之类的,想更加容易的获得金币等可以在游戏里买英雄等,今天我们发挥程序员的优势教给大家用Python语言自己写一个可以刷金币的脚本,以下是全部内容. 王者荣耀的冒险模式里有 ...

  7. python 写脚本 预约课程_Python盘纪念币系列之三:自动预约脚本编写 03 系列总结...

    前一篇遗漏了"预约兑换日期"的自动输入,这篇文章将介绍如何处理.另外,将会对"Python盘纪念币系列"做一个简单的总结. 自动输入预约兑换日期 不像文本输入框 ...

  8. python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST

    目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...

  9. 用python写脚本筛选原创微博_基于python编写的微博应用

    本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...

最新文章

  1. 简述ospf的各种报文
  2. 解决 Unable to get provider
  3. ML 01、机器学习概论
  4. 让您的Eclipse具有千变万化的外观
  5. 聚类算法KMeans和KMedoid 的Matlab实现
  6. 接收udp数据_聊聊UDP、TCP和实现一个简单的JAVA UDP小Demo
  7. mysql ERROR 1045 (28000): 错误解决办法
  8. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
  9. [转] 测试员,敢问路在何方(来自微软工程师)
  10. 快排第n趟排序结果校验
  11. 星星评价控件android开发_Android自定义View,评分星星控件(RatingBar)
  12. Mybatis动态标签基本使用
  13. php调用平安银行接口,PHP-Java-Bridge的使用(平安银行支付功能专版)
  14. 笔记本电脑华硕N56VZ的几种螺丝规格
  15. ps 图片 透明度 设置
  16. Android 双卡双待
  17. GTA5快速进入线上模式
  18. iOS-内购注意 沙盒二次验证
  19. 以Crotex M3为例讲解stm32芯片内部原理
  20. WinCE 6.0 禁用触摸屏的几种方法

热门文章

  1. python生成日历_使用python生成ical日历文件——将课程表导入到手机日历
  2. H5之webcoekt播放JPEG图片流
  3. mysql 临时表 两次_重复的临时表MySQL
  4. 高等数学一:函数与极限二:收敛数列的保号性以及其推论的理解
  5. 如何将PPT的页面调整为竖向???
  6. 量子力学、大数据、人工智能认知智能,中国崛起!道翰天琼
  7. OSCP-Escape(gif绕过)
  8. C语言——选择控制结构 寻找中位数v1.0编写一个函数返回三个整数中的中间数。函数原型:int mid(int a, int b, int c);功能是返回a,b,c三数中大小位于中间的一个数。
  9. 对于八皇后问题的详细说明
  10. 快手通过标签添加你什么意思_你知道快手标签是什么吗?钓号网告诉你