五、 编写一个自动获取昨天日期字符串格式的函数getYesterday()
def getYesterday(): # 获取昨天日期的字符串格式的函数 #获取今天的日期 today = datetime.date.today() #获取一天的日期格式数据 oneday = datetime.timedelta(days=1) #昨天等于今天减去一天 yesterday = today - oneday #获取昨天日期的格式化字符串 yesterdaystr = yesterday.strftime('%Y-%m-%d') #返回昨天的字符串 return yesterdaystr 我用Python自动生成报表以邮件发送,减轻了我的工作压力 |
六、编写一个生成邮件的函数create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name)
def create_email(email_from, email_to, email_Subject, email_text, annex_path, annex_name): # 输入发件人昵称、收件人昵称、主题,正文,附件地址,附件名称生成一封邮件 #生成一个空的带附件的邮件实例 message = MIMEMultipart() #将正文以text的形式插入邮件中 message.attach(MIMEText(email_text, 'plain', 'utf-8')) #生成发件人名称(这个跟发送的邮件没有关系) message['From'] = Header(email_from, 'utf-8') #生成收件人名称(这个跟接收的邮件也没有关系) message['To'] = Header(email_to, 'utf-8') #生成邮件主题 message['Subject'] = Header(email_Subject, 'utf-8') #读取附件的内容 att1 = MIMEText(open(annex_path, 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' #生成附件的名称 att1["Content-Disposition"] = 'attachment; filename=' + annex_name #将附件内容插入邮件中 message.attach(att1) #返回邮件 return message |
七、 生成一个发送邮件的函数send_email(sender, password, receiver, msg)
def send_email(sender, password, receiver, msg): # 一个输入邮箱、密码、收件人、邮件内容发送邮件的函数 try: #找到你的发送邮箱的服务器地址,已加密的形式发送 server = smtplib.SMTP_SSL("smtp.mxhichina.com", 465) # 发件人邮箱中的SMTP服务器 server.ehlo() #登录你的账号 server.login(sender, password) # 括号中对应的是发件人邮箱账号、邮箱密码 #发送邮件 server.sendmail(sender, receiver, msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号(是一个列表)、邮件内容 print("邮件发送成功") server.quit() # 关闭连接 except Exception: print(traceback.print_exc()) print("邮件发送失败") |
八、建立一个main函数,把所有的自定义内容输入进去,最后执行main函数
def main(): print(datetime.datetime.now()) my_sql = sql = "SELECT a.id '用户ID', a.gmtCreate '用户注册时间', af.lastLoginTime '最后登录时间', af.totalBuyCount '历史付款子单数', af.paidmountUSD '历史付款金额', af.lastPayTime '用户最后支付时间' FROM table a LEFT JOIN tableb af ON a.id= af.accountId ;" # 生成数据 my_data = get_datas(my_sql) # 生成字段名称 my_field = get_fields(my_sql) # 得到昨天的日期 yesterdaystr = getYesterday() # 文件名称 my_file_name = 'user attribute' + yesterdaystr + '.xlsx' # 文件路径 file_path = 'D:/work/report/' + my_file_name # 生成excel get_excel(my_data, my_field, file_path) my_email_from = 'BI部门自动报表机器人' my_email_to = '运营部' # 邮件标题 my_email_Subject = 'user' + yesterdaystr # 邮件正文 my_email_text = "Dear all, 附件为每周数据,请查收! BI团队 " #附件地址 my_annex_path = file_path #附件名称 my_annex_name = my_file_name # 生成邮件 my_msg = create_email(my_email_from, my_email_to, my_email_Subject, my_email_text, my_annex_path, my_annex_name) my_sender = '阿里云邮箱' my_password = '我的密码' my_receiver = [10001@qq.com']#接收人邮箱列表 # 发送邮件 send_email(my_sender, my_password, my_receiver, my_msg) print(datetime.datetime.now()) if __name__ == "__main__": main(); |
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。