领导让每天发工作报告到邮箱so:python自动写工作报告发邮箱
刚学python,交流学习所以注释很全,如有不对请大神指正# python3运行,需自行安装python-docx模块包
# 导入模块
import datetime, smtplib, requests, time
from docx import Document
from docx.oxml.ns import qn
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
# 定义新建word文档的类
class WorkWord(object):
def __init__(self):
self.document = Document()
# 文档全局字体设置为‘宋体’
self.document.styles['Normal'].font.name = u'宋体'
self.document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 新建文件的标题为当天的日期
def title(self, mon, day):
self.document.add_heading(u'xxx%s月%s日工作报告' % (mon, day), 0)
# 文档的内容
def content(self):
# 工作内容默认信息,
# 也可用 1.def content(self, text='摸鱼\n\t看视频')调用,
# 优点:可以导入参数 缺点:不利于返回数据推送酷推
self.text = '摸鱼\n\t看视频'# \n换行符 \t制表符 \r回车
p = self.document.add_paragraph('')
# 在段落后面追加文本,并可设置样式
p.add_run(u'\n今日工作内容:\n').bold = True# 字体加粗
# p.add_run(' and some ') #默认字体样式
# p.add_run('italic.').italic = True #字体倾斜
p.add_run(u'\n\t%s' % self.text)
# 保存word
def save_word(self, mon, day):
try:
word_name = u'%s月%s.docx' % (mon, day)
self.document.save(word_name)
# 酷推,不需要可屏蔽
cool_push('文件创建成功:%s\n内容:%s\nps:如内容不准确,请前往修改!' % (word_name, self.text))
print('文件创建成功:%s' % word_name)
except:
word_name = None
print('Error: 文件创建失败!')
return word_name
# 定义邮箱
class MailWord(object):
def __init__(self):
"""
163邮箱:
163邮箱smtp服务器
pop: pop.163.com
smtp: smtp.163.com
QQ邮箱
POP3:pop.qq.com
SMTP:smtp.qq.com
SMTP端口号:25
QQ邮箱smtp服务器及端口
接收邮件服务器:imap.qq.com,使用SSL,端口号993
发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
新浪邮箱
新浪邮箱smtp服务器
外发服务器:smtp.vip.sina.com
收件服务器:pop3.vip.sina.com
新浪免费邮件
外发服务器:smtp.sina.com.cn
收件服务器:pop3.sina.com.cn
新浪免费邮箱
POP3:pop.sina.com
SMTP:smtp.sina.com
SMTP端口号:25
新浪VIP邮箱
POP3:pop3.vip.sina.com
SMTP:smtp.vip.sina.com
SMTP端口号:25
新浪企业邮箱
POP3:pop.sina.com
SMTP:smtp.sina.com
SMTP端口号:25
"""
self.sender = '77777777@qq.com'# 发送来自
self.receivers = ['88888888@qq.com']# 接收邮件,可设置为你的QQ邮箱或者其他邮箱
self.mail_host = "smtp.qq.com"
self.mail_user = "" # 邮箱账号
self.mail_key = "" # 自定义qq邮箱SMTP服务授权码
def new_mail(self, mon, day):
# 创建一个带附件的实例
self.message = MIMEMultipart()
self.message['From'] = Header("xxx", 'utf-8')# 邮件来自xxx
self.message['To'] = Header("xx总", 'utf-8')# 邮件接收人xx总
subject = 'xxx%s月%s日工作报告' % (mon, day)
self.message['Subject'] = Header(subject, 'utf-8')# 邮件主题
def mail_text(self, word_name, day):
# 邮件正文内容
self.message.attach(MIMEText('', 'plain', 'utf-8'))
# 构造附件,传送当前目录下的当日工作总结文件
att1 = MIMEText(open('%s' % word_name, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
# 如果内容含有中文需解码
att1["Content-Disposition"] = 'attachment; filename=%s.docx' % day# .encode("utf-8")
self.message.attach(att1)
# 发送邮件
def send_mail(self):
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(self.mail_host, 25)# 25 为 SMTP 端口号
smtpObj.login(self.mail_user, self.mail_key)
smtpObj.sendmail(self.sender, self.receivers, self.message.as_string())
mail_info = "邮件发送成功"
print(mail_info)
except smtplib.SMTPException:
mail_info = "Error: 无法发送邮件"
print(mail_info)
return mail_info
# 获取日期
def mon_day():
curtime = datetime.datetime.now()
curtime = str(curtime.strftime('%Y/%m/%d %H:%M:%S'))
mon = curtime# 月份
day = curtime# 日
return mon, day
# 酷推
def cool_push(info):
spkey = ''# 酷推key
cpurl1 = 'https://push.xuthus.cc/wx/' + spkey # wx:微信 send:QQ group:QQ群推送
requests.post(cpurl1, info.encode('utf-8'))
# 主函数
def main():
mon, day = mon_day()# 获取日期
word1 = WorkWord()# 创建文档对象
word1.title(mon, day)# 文档标题传入日期
word1.content()# 文档内容,演示使用默认参数
word_name = word1.save_word(mon, day)# word保存名字传入日期
# 判断word是否创建
if word_name == None:
# 创建失败 酷推推送
cool_push('Error: 文件创建失败!')
else:
# 创建成功预留3分钟确认文档时间
time.sleep(180)
mail1 = MailWord()# 创建邮件对象
mail1.new_mail(mon, day)# 新邮件标题传入日期
mail1.mail_text(word_name, day)# 邮件内容传入word文件名和日期
mail_info = mail1.send_mail()# 发送邮件
cool_push(mail_info)# 酷推推送
if __name__ == '__main__':
main()
代码我放入服务器自建filerun网盘目录下,可在线修改文档内容
ps:需要chmod权限
使用宝塔面板定时运行
没有发现宝塔自定义工作日定时,单休{:1_937:} 只能设置6个定时 wchenfeng 发表于 2020-12-1 14:15
万一工作报告写得出错了 大佬不检查检查嘛
写好之后酷推把内容推到微信或者QQ上,检查无误3分钟后自动发送,有需要修改的再登录filerun修改一下文档 yunruifuzhu 发表于 2020-12-1 14:00
麻烦的不是 定时发送 而是 具体内容编不出来啊
是啊,可恨的是每天工作重复还让写工作报告,这种情况就适用了 麻烦的不是 定时发送 而是 具体内容编不出来啊 大佬就是厉害。 万一工作报告写得出错了 大佬不检查检查嘛 牛逼,看看能好使不 厉害了,报告是自动生成的吗? 吃土不忘剁手人 发表于 2020-12-1 14:19
厉害了,报告是自动生成的吗?
把 摸鱼\n\t看视频 替换成预设工作内容{:1_925:} 大佬牛逼 class
页:
[1]
2