hab hier einen Code bei dem ich etwas nicht verstehe...
Sinn dahinter: Das Programm läuft auf einem Raspberry und schickt mir jeden Tag aktuelle Corona-Zahlen (Sinnhaftigkeit dahinter wird bitte nicht diskutiert

Mein Problem: Statt 1ner E-Mail bekomme ich tweilweise 50+, und manchmal funktioniert es und es wird nur eine E-Mail versendet. Ich verstehe nicht warum... vermute mal das das Problem bei dem "schedule teil" liegt möglicherweise...
Zu einfach schlecht programmierten zeilen bitte ich euch auch um Kommentare

Code: Alles auswählen
import requests
import smtplib
import schedule
from bs4 import BeautifulSoup
from time import sleep
#daten
gmail_user = "email adresse zum einloggen"
gmail_user_pwd = "passwort zum einloggen"
url = "https://bmi.gv.at/news.aspx?id=4A7171477A51625143334D3D"
subject = "Corona Info"
def banner():
banner = "###############################\n" \
"----Corona_Info_MailService----\n" \
"###############################"
return print(banner)
def requests_get_info(url):
req = requests.get(url)
bfs_Object = BeautifulSoup(req.text, "html.parser")
daten_raw = str(bfs_Object.find_all("strong"))
daten_replace1 = daten_raw.replace("[<strong>Corona-Virus</strong>, <strong>", "")
daten_ready_replaced = daten_replace1.replace("</strong>]", "")
daten = daten_ready_replaced.split(", ")
return daten
def send_mail_to(subject, corona_daten, gmail_user, gmail_user_pwd):
#liste aller empfänger
# weitere email adressen hier hinzufügen: <<<===
addressee_list = ["email@absender.foo"]
#verbindung zu smtp server herstellen und einloggen
smtp_server = smtplib.SMTP("smtp.gmail.com", 587)
smtp_server.ehlo()
smtp_server.starttls()
smtp_server.login(gmail_user, gmail_user_pwd)
#gestaltung der email
for people in addressee_list:
header = "To:" + people + "\n" + "From: " + gmail_user + "\n" + "Subject:" + subject + "\n"
msg_scheduling = corona_daten[0] + "\n\n" + corona_daten[1] + "\n\n" + corona_daten[2] + "\n"
message = header + msg_scheduling
message_encoded = message.encode("iso-8859-15", errors="ignore")
smtp_server.sendmail(gmail_user, people, message_encoded)
smtp_server.close()
return print("Done!")
def main():
banner()
daten = requests_get_info(url)
send_mail_to(subject, daten, gmail_user, gmail_user_pwd)
if __name__ == '__main__':
which_time = str(input("Zu welchen Zeit erwarten Sie die Email? [00:00]\n"))
print("[RUNNING] corona_service is running...")
while True:
schedule.every().day.at(which_time).do(main)
schedule.run_pending()
sleep(60)