Verstehe nicht warum
Verfasst: Sonntag 3. Januar 2021, 09:59
Hallo Community,
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
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)