# IMPORTS import smtplib, ssl, sys, requests, csv, time sys.path.append("./env.py") from env import serveurMailPassword, serveurPort, serveurSmtp, serveurAdrresseMail, mailReception from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication is_in_alert = False time_limit = 100 # POUR LE TEMPS ENTRE CHAQUES MAILS UNE FOIS L'ALERTE DÉCLENCHÉE UNE PREMIÈRE FOIS # FONCTION IMPORT URL FROM CSV + TEST REQUEST def test_url(): print(time.ctime()) urls_hs = [] with open('./url.csv', newline='') as file: reader = csv.reader(file) for row in reader: addr = str(row) url = addr.strip('[]') try: response = requests.get(url.strip('"\'')) if response.status_code != 200: urls_hs.append(url) print(url + ' est hors service') else: print(url + ' / ' + str(response.status_code)) except Exception as e: urls_hs.append(url) print(str(e)) return urls_hs # FONCTION SEND MAIL def send_mail(urls_hs): # EN-TETE EMAIL message = MIMEMultipart('mixed') message['From'] = serveurAdrresseMail message['To'] = mailReception message['CC'] = '' message['Subject'] = 'Attention, un ou plusieurs site(s) semble(nt) hors service' # CONTENU (TEXT) if urls_hs: for url in urls_hs: mail = " ".join(urls_hs) contenu = '

Bonjour, voici la liste du ou des sites HS: {mail}

\n'.format(mail=mail) body = MIMEText(contenu, 'html') message.attach(body) # CONVERSION EN CHAINE DE CARACTERES mail_str = message.as_string() context = ssl.create_default_context() # ENVOIE DU MAIL with smtplib.SMTP_SSL(serveurSmtp, serveurPort, context=context) as server: server.login(serveurAdrresseMail, serveurMailPassword) server.sendmail(serveurAdrresseMail, mailReception, mail_str) server.quit() # ALERTE = TRUE is_in_alert = True time_stamp = time.ctime() else: print('Tout est OK ;)') is_in_alert = False print(is_in_alert) # CHECK TIMER FONCTIONS def check_timer(time_stamp, current_time): if current_time - time_stamp > time_limit: print(current_time - time_stamp) resend = True else: resend = False print(current_time - time_stamp) return resend # FONCTION CHECK IF MAIL ALREADY SEND def check_alert(): if is_in_alert: # CHECK si timer > 1 heure resend = check_timer(time_stamp, time.ctime()) if resend: urls = test_url() send_mail(urls) else: urls = test_url() send_mail(urls) # MAIN (A) check_alert() # PYTHON TIME (B) # while True: # urls = test_url() # send_mail(urls) # time.sleep(300)