python程序报错自动发送到QQ邮箱
- import datetime
- import ssl
- import smtplib
- import time
- from email.message import EmailMessage
- import psutil
-
- def bind_process(path_lst):
- if type(path_lst) != list:
- print('请传入列表结构的数据')
- return 1
- while True:
- error_lst = []
- process_list = psutil.pids()
- for path in path_lst:
- pd = 0
- path = path.replace('\\', '/').replace('//', '/')
- for process in process_list:
- p = psutil.Process(process)
- try:
- name = p.cmdline()[1]
- except Exception:
- continue
- if path == name:
- pd = 1
- break
- if pd == 0:
- error_lst.append(path)
- if error_lst:
- sr = ''
- for err in error_lst:
- sr += err + '\n'
- sendEmail(sr)
- time.sleep(3600)
- else:
- print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ' 程序无异常')
- time.sleep(3600)
-
-
-
- def sendEmail(msg):
- key = 'xzczopvwcjzmdgjg'
- EMAIL_ADDRESS = '19876511781@qq.com' # 接受邮件的邮箱地址
- EMAIL_PASSWORD = key
- smtp = smtplib.SMTP('smtp.qq.com', 25)
- context = ssl.create_default_context()
- sender = EMAIL_ADDRESS
- receiver = EMAIL_ADDRESS
-
- subject = "程序意外终止"
- body = msg
- msg = EmailMessage()
- msg['subject'] = subject
- msg['From'] = sender
- msg['To'] = [receiver] #多个用户
- msg.set_content(body)
- with smtplib.SMTP_SSL("smtp.qq.com", 465, context=context) as smtp:
- smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
- smtp.send_message(msg)
- print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), ' 有程序意外停止 已发送到邮箱')
-
- bind_process([ r"C:\Users\Administrator\Desktop\anjuke3\main2.py"]) # 需要检测的文件路径(crawl启动的 路径写到crawl)
-
-