python 輕量級定時框架apscheduler,週中定時給自己傳送郵件。
阿新 • • 發佈:2020-08-29
需求:蒐集一些資訊,並且每日通過郵件推送給自己。
參考連結:
【乾貨】APScheduler官方文件翻譯:https://www.jianshu.com/p/4f5305e220f0
花10分鐘讓你徹底學會Python定時任務框架apscheduler:https://blog.csdn.net/somezz/article/details/83104368
python apscheduler 暫停和恢復任務:https://www.jianshu.com/p/1c98cbabbf7e
APScheduler(Python化的Cron)使用總結 定時任務:https://www.cnblogs.com/zhaoyingjie/p/9664081.html
思路:
構造一個定時計劃,在指定時間通過smtp服務傳送郵件資訊。
定時計劃使用apscheduler框架。可以輕鬆的,通過構造triggersd來設定自己的定時任務。
簡單例子,對於我們的需求,使用使用cron類觸發器:
# 使用後臺執行,非阻塞 scheduler = BackgroundScheduler() # 新增任務 - 3類 # 新增任務 - 1:在指定時間執行 scheduler.add_job(send_job, 'date', run_date=datetime.datetime.now() + datetime.timedelta(seconds=5), args=['text']) # 新增任務 - 2:間斷時間執行 scheduler.add_job(send_job, 'interval', seconds=3,args=['text']) # 新增任務 - 3: 週期性指定時間執行 scheduler.add_job(send_job,"cron", day_of_week='*', hour='9', minute='20', second='*/2',args=['text']) # 啟動任務sched.start() # 中斷任務,wait=False表示立刻中斷 sched.shutdown(wait=True)
再結合傳送郵件的功能,構造定時傳送郵件任務。
# 執行郵件傳送 def send_mail(mail_content='test'): try: host_server = 'smtp.126.com' # sender為發件人的郵126箱 sender = ***@126.com' # pwd為126郵箱的授權碼 pwd = '***' # 發件人的郵箱 sender_mail = '***@126.com' # 收件人郵箱 receiver = '***@126.com' # 郵件標題 mail_title = 'python liangzi' # ssl登入 smtp = SMTP_SSL(host_server) # set_debuglevel()是用來除錯的。引數值為1表示開啟除錯模式,引數值為0關閉除錯模式 smtp.set_debuglevel(0) smtp.ehlo(host_server) smtp.login(sender, pwd) msg = MIMEText(mail_content, "plain", 'utf-8') msg["Subject"] = Header(mail_title, 'utf-8') msg["From"] = sender_mail msg["To"] = receiver smtp.sendmail(sender_mail, receiver, msg.as_string()) smtp.quit() print("傳送成功") return True except Exception as e: print(e,'傳送失敗') return False