首先,需要明确要求:
1.每天定时脚本
2.发送带附件的邮件
3.提取的内容从昨天开始,覆盖之前的天数的数据
4.附件为Excel表
所以,代码的逻辑大概为:
1.连接数据库
2.设置发件人、收件人的参数获取
3.提取数据
4.写入Excel表
5.设置邮件
6.发送邮件
获取数据写入Excel表
首先需要获得数据,然后记入Excel表。这时候用到了Python学习随笔2谈及的openpyxl库。
FILE_PATH = "union_kuaiqian_txn_detail_%s.xlsx" % (adate)
workBook = openpyxl.Workbook()
workBookAct = wb.active
workBookAct.append(["日期","内容"])
sql = "select * from atable where date between 20200817 and %s" % (adate)
cursor.execute(sql)
for (content) in cursor:
workBookAct.append([date,content])
workBook.save(FILE_PATH)
设置邮件
接下来需要在代码中设置邮件。这时候用到了Python学习随笔2谈及的smtplib库。
message = MIMEText(excelTable, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(to_mail_list, 'utf-8')
message['Subject'] = Header(FILE_PATH, 'utf-8')
# 构造附件1,传送当前目录下的 excel 文件
att1 = MIMEText(open(FILE_PATH, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename='+FILE_PATH
message.attach(att1)
发送邮件
设置好了邮件,就可以发送了
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, to_mail_list, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
定时脚本
之后,需要将脚本部署上Linux服务器,移动到相对应的目录下,使用cron定时任务命令。之前Linux学习随笔3的知识用上了。
0 9 * *1,2,3,4,5 python mytest.py
这时候再添加一些条件,比如需要额外增加收件人,需要输入提取的数据的截止日期。这时候用到了Python学习随笔2谈及的argparse库。
0 9 * *1,2,3,4,5 python mytest.py --to_mail_list aaa@.com -date 20200817