Python学习随笔3-如何自动发送一份邮件

首先,需要明确要求:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值