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
|
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 |