我用Python自动生成报表以邮件发送,减轻了我的工作压力

发表于:2018-9-06 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:菜鸟学Python    来源:今日头条

  五、 编写一个自动获取昨天日期字符串格式的函数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),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号