我们几乎每时每刻都在刷各种手机app。看看微信有没有人找你 ,看看邮件有没有老板布置的任务,看看新闻有没有大事发生,看看抖音有没有新的傻雕,看看公开课假装学习一下。看起来好像信息时代弄潮儿,其实只沦落为app测试员。

机智如小编,可以写些简单的小脚本收集汇总下信息。但又沦落为自己程序的奴隶。每隔几分钟就跑下自己写的丑陋app,看看有没有更新。这样很不酷啊。什么叫酷,12年前的钢铁侠第一集就给了我们标准答案。所有的信息收集整理和推送都应该交给电脑来做,我们只需要专心注意我们要做的大事上。

如何实现呢?我们需要一个后台程序定时运行任务,推送结果。最简单的解决方案就是用Windows自带的计划任务和电子邮件,步骤如下图

同时你的脚本还需要加入发送邮件功能,如果结果是纯文本的话,在邮件客户端里格式可能会乱,所以最好转成html样式。象pandas直接带to_html方法。代码如下

def send_mail(fromaddr, toaddrs, subject, body):
   # Add the From: and To: headers at the start!
   try:
       if body.startswith('<'):
           msg = MIMEText("<html><body>%s</body></html>"
                          % (fromaddr, toaddrs, subject, body), 'html', 'utf-8')
           msg['From'] = fromaddr
           msg['To'] = toaddrs
           msg['Subject'] = subject
           msg = msg.as_string()
       else:
           msg = ("From: %s\r\nTo: %s\r\nSubject: %s\n\n%s"
                  % (fromaddr, ", ".join(toaddrs), subject, body)).encode('utf-8')
       print("Message length is", len(msg))
       server = SMTP_SSL('smtp.qq.com')
       server.set_debuglevel(1)
       server.login("test@qq.com", "ssss")
       server.sendmail(fromaddr, [toaddrs], msg)
       server.quit()
   except Exception as e:
       print(e)

if __name__ == '__main__':      
   total = load_all_sites(sites).to_html()
   from datetime import datetime

   time = datetime.now().strftime("%Y-%m-%d %H:%M")
   print(time)
   print(str(total))

   send_mail("test@qq.com", "test@qq.com", f"报表_{time}", str(total))

注意时间变量time是最好加到subject里的,一是方便日后追踪,二是防止邮件服务误判为垃圾邮件。至于send_mail的细节,请参阅我之前的文章