小组要求每周五下班前要发送周报,但是我每次都忘记,虽然Foxmail邮箱能设置提醒,但还是想自己写个脚本来实现相关功能。
主要功能:每周五晚上7点提醒我发送周报邮件。
主要思路:
- 发送邮件
- 弹框提醒
- 定时执行脚本
1. 发送邮件
最开始想到的当然是怎么用Python把邮件发送出去了,用的是yagmail库。首先安装yagmail库
pip install yagmail
以QQ邮箱为例:
import yagmail
# 登录你的邮箱
yag = yagmail.SMTP(user = 'xxxx@qq.com', password = 'xxx', host = 'smtp.qq.com')
# 发送邮件
yag.send(to = ['123456@qq.com','22344@qq.com'], subject = '邮件的主题', contents = ['我要发送的内容', 'C://Users//Desktop//log.txt', 'C://Users//Desktop//music.txt'])
只需要三行代码即可发送邮件,分别看下登录邮箱和发送邮件的方法:
# 登录邮箱
yagmail.SMTP(user, password, host, port)
user:你的邮箱
password:授权码或密码,自行百度如何获取QQ邮箱授权码,我公司用的是Foxmail,所以这里我填的是我的邮箱密码
host:发件服务器,不同邮箱的服务器不同
port:服务器端口,QQ邮箱可不填
我用公司邮箱的时候还有一个坑:我填了以上4个参数后,提醒我STARTTLS extension not supported by server,原来是我公司的服务器不支持STARTTLS,所以在port参数后加上了smtp_starttls = False即可
# 发送邮件
yag.send(to, subject, contents, attachments, cc)
to:收件人,可以用列表的方式支持多个收件人,[‘123@qq.com’, ‘234@qq.com’]
subject:邮件主题
contents:邮件内容
attachments:附件,也可以跟我前面一样,将附件和内容写在一个列表里,也可以分开写。附件也支持用列表的方式表示多个附件。
cc:抄送
2. 弹框提醒
这部分我是用pyqt5写了两个UI界面,一个是提醒框,一个是写邮件的界面。逻辑是到了指定的时间弹出提醒框
提醒框的代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QInputDialog, QLineEdit, QTextEdit, QGridLayout, QHBoxLayout, QVBoxLayout, QFileDialog, QMessageBox
from