Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Beispiel - Verwaltung von E-Mail-Adressen

Newsletter

Newsletter werden benutzt, um allen Mitgliedern einer Gruppe Informationen per E-Mail zukommen zu lassen.

So könnten schulinterne Newsletter etwa dazu dienen, allen Schülerinnen und Schülern der Jahrgangsstufe 11 des ...-Gymnasiums den neuen Kursarbeitsplan zukommen zu lassen. Hierzu benötigt der MSS-Leiter die E-Mail-Adressen aller Schülerinnen und Schüler der 11. Jahrgangsstufe.

Adressliste

Zudem wird ein Programm benötigt, das E-Mails an alle diese Adressen verschickt. Wie so etwas geht wird weiten unten gezeigt. Wir betrachten hier zuerst die Verwaltung von E-Mail-Adressen.

Verwaltung von E-Mail-Adressen

Wie lässt sich eine größere Ansammlung von E-Mail-Adressen verwalten? Bisher haben wir alle anfallenden Daten mit Hilfe von Variablen erfasst. Diesen Ansatz könnten wir hier ebenfalls weiter verfolgen.

# Datenverwaltung
adresse1 = 'amueller@gmx.de'
adresse2 = 'carla2@hotmail.org'
adresse3 = 'herbert.fluhr@web.de'
adresse4 = 'petra@dahm.de'
adresse5 = 'ewen@t-online.de'
adresse6 = 't_schmidt@web.de'
adresse7 = 'nicole.weber@gmx.de'
# Datenverarbeitung
print(adresse1)
print(adresse2)
print(adresse3)
# ...

Wenn auf diese Weise sehr viele E-Mail-Adressen verwalten werden sollen (z.B. die Adressen von 100 Personen), dann erweist sich der gewählte Ansatz als nicht praktikabel. Ein neuer Ansatz muss also her.

Statt alle Daten einzeln mit Variablen zu verwalten, ist es geschickter, eine Art Daten-Container zu benutzen. Mit einer Liste als Daten-Container werden mehrere einzelne Daten zu einer komplexeren Dateneinheit zusammenfassen. Man benötigt dann nur noch eine Variable, um die gesamte Dateneinheit zu verwalten.

# Datenverwaltung
adressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
# Datenverarbeitung
for adresse in adressen:
    print(adresse)

Aufgabe 1

Teste das gezeigte Programm. Erweitere die bereits existierende Liste um weitere E-Mail-Adressen. Worin besteht der Vorteil, eine Datenansammlung mit einer Liste zu verwalten?

Zugriff auf die Listenelemente

Auf die einzelnen Elemente einer Liste kann man (lesend und schreibend) zugreifen.

Aufgabe 2

Informiere dich auf der nächsten Seite über den Zugriff auf Listenelemente. Bearbeite anschließend den folgenden Python-Dialog. Stelle erst Vermutungen über die Rückmeldungen von Python auf. Überprüfe anschließend deine Vermutungen, indem du den Dialog selbst ausführst.

>>> adressen = [
    'amueller@gmx.de',
    'carla2@hotmail.org',
    'herbert.fluhr@web.de',
    'petra@dahm.de',
    'ewen@t-online.de',
    't_schmidt@web.de',
    'nicole.weber@gmx.de'
    ]
>>> adressen[0]

>>> adressen[1]

>>> adressen[6]

>>> adressen[7]

>>> len(adressen)

>>> adressen[len(adressen)-1]

>>> adressen

>>> adressen[1] = 'carla_meier@online.de'
>>> adressen

Eine Liste durchlaufen

Es gibt mehrere Möglichkeiten in Python, alle Elemente einer Liste zu durchlaufen.

Aufgabe 3

(a) Informiere dich auf der nächsten Seite, wie man eine Liste durchlaufen kann.

(b) Entwickle ein Programm, das alle E-Mail-Adressen auf dem Bildschirm ausgibt.

(c) Entwickle ein Programm, das E-Mail-Header erzeugt und auf dem Bildschirm wie folgt ausgibt.

>>> 
from: mssleiter@burg-kl.de
to: amueller@gmx.de
subject: Kursarbeiten
...
from: mssleiter@burg-kl.de
to: carla2@hotmail.org
subject: Kursarbeiten
...

...
from: mssleiter@burg-kl.de
to: nicole.weber@gmx.de
subject: Kursarbeiten
...

Hinzufügen und Löschen von Listenelelementen

Listen kann man dynamisch erweitern. Man kann auch wieder Elemente aus einer Liste löschen.

Aufgabe 4

(a) Informiere dich zuerst auf der nächsten Seite, wie man Elemente hinzufügt und auf Teillisten zugreift.

(b) Bearbeite anschließend den folgenden Python-Dialog. Stelle erst Vermutungen über die Rückmeldungen von Python auf. Überprüfe anschließend deine Vermutungen, indem du den Dialog selbst ausführst.

>>> adressen = ['amueller@gmx.de', 'carla2@hotmail.org', 'herbert.fluhr@web.de', 'petra@dahm.de']
>>> adressen

>>> adressen + ['b-krewer@t-online.de']

>>> adressen

>>> adressen = adressen + ['b-krewer@t-online.de']
>>> adressen

>>> adressen[0:1] + adressen[2:5]

>>> adressen

>>> adressen = adressen[0:1] + adressen[2:5]
>>> adressen

Aufgabe 5

(a) Führe den Python-Dialog selbst aus. Erkläre, wie die Ergebnisse zustande kommen.

(b) Wie kann man ein neues Listenelement vorne in die Liste setzen? Wie kann man das erste Listenelement löschen? Teste deine Ideen mit geeigneten Python-Dialogen.

E-Mails automatisiert verschicken

Das folgende Programm zeigt, wie man eine E-Mail automatisiert verschicken kann.

def eMailVersenden(adresseAbsender, adresseEmpfaenger, betreff, text):

    # Mail erstellen
    mail_from = adresseAbsender
    mail_to = adresseEmpfaenger
    mail_subject = betreff
    mail_header = 'From: ' + mail_from + '\n' + 'To: ' + mail_to + '\n' + 'Subject: ' + mail_subject + '\n'
    mail_text = text
    mail_body = '\n' +  mail_text + '\n\n'
    mail = mail_header + mail_body
    print(mail)

    # Mail versenden - Einstellungen aus Postausgang-Server (SMTP)
    # Web.de
    # benutzer = adresseAbsender
    # mailserver = 'smtp.web.de'
    # Aol.de
    # benutzer = 'meineAdresse@aol.com'
    # mailserver = 'smtp.aim.com'
    # Gmx.de
    # benutzer = 'meineAdresse@gmx.de'
    # mailserver = 'smtp.gmx.de'
    # Gmail / GoogleMail
    # benutzer = 'meineAdresse@googlemail.com'
    # mailserver = 'smtp.gmail.com'

    #Verbindung erstellen, anmelden und Email verschicken
    import smtplib
    benutzer = adresseAbsender
    mailserverBenutzer = '...' # ggf. oben auswählen
    passwort = '...' # BLANKEN !!!
    empfaenger = mail_to
    #mailserver = 's. oben'
    smtp = smtplib.SMTP(mailserverBenutzer)
    smtp.starttls()
    smtp.login(benutzer, passwort)
    smtp.sendmail(benutzer, empfaenger, mail)
    smtp.quit()

# Test
eMailVersenden('...', '...', 'Test', 'Hallo, alles ok?')

Aufgabe 6

Ändere das Programm so ab, dass man eine E-Mail an alle Adressen einer Empfängerliste schicken kann. Teste das Programm mit geeigneten Daten.

X

Fehler melden

X

Suche