TigerJython xx
für Gymnasien

e-Mails mit Python verschicken

In vielen Applikationen (Bestätigung einer Online-Anmeldung, Überwachung eines Prozesses usw.) ist es vorteilhaft automatisch eMails zu verschicken. Im Python steht dazu die Bibliothek smtplib, die Sie in Ihrem Mailprogramm importieren müssen. Sie benötigen Sie ein Mail-Konto mit Username, Password und SMTP-Server. Zu testzwecken können Sie ein Konto bei GMail einrichten und als SMTP-Server smtp.gmail.com verwenden.

Klassische EMails werden mit einem SMTP-Protokoll abegeschickt und mit einem POP3-Protokoll abgehollt. Der Absender muss sich mit einem Usernamen und Passwort

import smtplib

import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

USERNAME = 'user@gmail.com'  # Username for authentication
PASSWORD = 'password  # Password for authentication
SMTP_SERVER = 'smtp.gmail.com'  # URL of SMTP server

FROM = "Peter Meier"  # Name shown as sender
TO = 'adress' # Mail address of the recipient
SSL_PORT = 465

def remove_umlaute(s):
    s = s.replace("ä", "ä")
    s = s.replace("ö", "ö")
    s = s.replace("ü", "ü")
    s = s.replace("Ä", "Ä")
    s = s.replace("Ö", "Ö")
    s = s.replace("Ü", "Ü")
    return s

# Send the email via Gmail
def sendMail(subject, text, img = None):
    msg = MIMEMultipart("alternative")
    msg.attach(MIMEText(text, "html"))

    tmpmsg = msg
    msg = MIMEMultipart()
    msg.attach(tmpmsg)
    
    if img != None:
        if not os.path.exists(img):
            print "File", img, "does not exist." 
        else:
            fp = open(img, 'rb')
            img = MIMEImage(fp.read())  # included in mail, not as attachment
            fp.close()
            msg.attach(img)
    
    msg['Subject'] = subject
    msg['From'] = FROM

    print("Sending the mail")
    server = smtplib.SMTP_SSL(SMTP_SERVER, SSL_PORT)
    server.login(USERNAME, PASSWORD)
    server.sendmail(FROM, [TO], msg.as_string())
    server.quit()
    print("Mail sent")

text = "Juhui, es funktioniert!"  
text = remove_umlaute(text)       
subject = "Test mit Python Script"
#sendMail(subject, text)
sendMail(subject, text, "d:/a/bug.png")
Programmcode markieren (Ctrl+C kopieren)


Erklärungen zum Programmcode:

remove_umlaute(): ersetzt Umlaute durch HTML-Zeichen
SendMail(): definiert das Verschicken des eMail, mit Parametern Betreff, Mailtext und falls vorhanden Bild