python控制随机间隔一段时间发送邮件、消息或弹出窗口,python发送邮件,""" If you n


""" If you need to do something irregularly, randomly during the weekday, youoften forget. This script gives you mail, sms or popup window indefinitely inrandom interval to remind you of doing it. It runs forever. If you want tosend emails, uncomment the row sendMail() and fill variable me, to, smtp,name, login in function sendMail(). """# -*- coding: utf-8 -*-import time, random, sys, os, smtplibif sys.version < '3':    from Tkinter import *else:    from tkinter import *# ----------------- variables ----------------------------------mytimefrom=6        # from 6 pmmytimeto=22         # to 22  ammydelayfrom=1*3600    # random delay in secs frommydelayto=5*3600      # random delay in secs torandommsgnext="randommsgnext.txt"     # place to save time of next message# ----------------- defs ----------------------------------def showMessage():    # show reminder message window    root=Tk()    x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 2    y = (root.winfo_screenheight() - root.winfo_reqheight()) / 2    root.geometry("+%d+%d" % (x, y))    root.protocol('WM_TAKE_FOCUS', root.update )    root.wait_visibility(root)    root.attributes('-topmost',1)    label=Label(root, text="Do what you should do.").pack({"side": "left"})    button=Button(text="OK", width="10", command=lambda:root.destroy()).pack()    root.mainloop()def sendMail():    # sends mail    s = smtplib.SMTP(smtp)    s.login(name, password)    subject="Reminder"    fromaddr=fromadr    toaddrs= [toadr]    text= "Do what you should do.\n%s" % time.ctime()    msg = ("Subject: %s\nFrom: %s\nTo: %s\n\n%s" % (subject, fromaddr, ", ".join(toaddrs), text))    s.sendmail(fromaddr, toaddrs, msg)    s.quit()def sendSMS():    # sends sms    message={'user': user, 'password': password, 'sender': fromnumber, 'recipient': tonumber, 'message': "goodbye"}    if sys.version < '3':        import urllib        params = urllib.urlencode(message)        f=urllib.urlopen(http, params)    else:        import urllib.parse        import urllib.request        params = urllib.parse.urlencode(message)        f = urllib.request.urlopen(http % params)def checktime(nowtime):    # do not remind at night    if nowtime.tm_hour<=mytimefrom or nowtime.tm_hour>=mytimeto:        return False    return Truedef timenextwritef():    # save next time in file    f=open(randommsgnext,"a")    timenext=time.mktime (nowtime)+delaysec    f.write(time.ctime(timenext)+"\n")    f.close()    os.utime(randommsgnext, None)# ----------------- main app ----------------------------------nowtime=time.localtime()os.chdir(os.path.dirname(sys.argv[0]))  # to have "randommsgnext" in the same dirwhile True:    delaysec=random.randint(mydelayfrom,mydelayto)    timenextwritef()    time.sleep(delaysec)    nowtime=time.localtime()    if checktime(nowtime):#        sendSMS()#        sendMail()    # uncomment if you want sending mails        showMessage()

评论关闭