Python - E-Mail senden
Hallo dort, aufstrebende Python-Programmierer! Heute werden wir eine aufregende Reise in die Welt des E-Mail-Sendens mit Python antreten. Als euer freundlicher Nachbar und Computerlehrer bin ich begeistert, euch durch diesen Prozess zu führen. Glaubt mir, am Ende dieses Tutorials werdet ihr wie ein Profi E-Mails senden!
E-Mail senden in Python
Lassen Sie uns mit den Grundlagen beginnen. E-Mails in Python zu senden, ist wie ein digitaler Postbote zu sein, aber anstatt von Haus zu Haus zu gehen, verwenden wir eine spezielle Python-Bibliothek namens smtplib
. SMTP steht für Simple Mail Transfer Protocol, was nur eine elegante Art ist, zu sagen: "die Regeln für das Senden von Post über das Internet".
Hier ist ein einfaches Beispiel, um uns zu starten:
import smtplib
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "dein_passwort"
message = "Hallo, dies ist eine Test-E-Mail von Python!"
mit smtplib.SMTP("smtp.gmail.com", 587) als server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
Lassen Sie uns das aufbrechen:
- Wir importieren die
smtplib
-Bibliothek. - Wir richten unsere Absender-E-Mail, Empfänger-E-Mail und das Passwort ein.
- Wir erstellen eine einfache Nachricht.
- Wir verbinden uns mit dem SMTP-Server von Gmail (mehr dazu später).
- Wir starten TLS für Sicherheit.
- Wir loggen uns in unser E-Mail-Konto ein.
- Schließlich senden wir die E-Mail!
Python smtplib.SMTP() Funktion
Die SMTP()
-Funktion ist wie der Schlüssel zu unserer digitalen Poststelle. Sie stellt eine Verbindung zum SMTP-Server her, den wir verwenden möchten. Hier ist ein detaillierterer Blick:
import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)
print(server.ehlo())
server.starttls()
print(server.ehlo())
In diesem Beispiel:
- Wir erstellen ein SMTP-Objekt für den Gmail-Server.
-
ehlo()
ist wie "Hallo" an den Server zu sagen. -
starttls()
startet die TLS-Verschlüsselung für Sicherheit.
Das Python smtpd-Modul
Während smtplib
für das Senden von E-Mails verwendet wird, ist smtpd
für das Empfangen davon. Es ist wie die Einrichtung deines eigenen kleinen E-Mail-Servers! Hier ist ein einfaches Beispiel:
import asyncore
from smtpd import SMTPServer
class EmailServer(SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print(f'Message from: {peer}')
print(f'Message addressed from: {mailfrom}')
print(f'Message addressed to : {rcpttos}')
print(f'Message length : {len(data)}')
server = EmailServer(('localhost', 1025), None)
asyncore.loop()
Dies richtet einen grundlegenden E-Mail-Server ein, der Informationen über empfangene E-Mails ausgibt. Es ist wie ein persönlicher Briefsortierraum zu haben!
Eine HTML-E-Mail mit Python senden
Jetzt machen wir unsere E-Mails mit etwas HTML schick:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "dein_passwort"
message = MIMEMultipart("alternative")
message["Subject"] = "multipart test"
message["From"] = sender_email
message["To"] = receiver_email
text = "Hi there! This is a plain text email."
html = """\
<html>
<body>
<p>Hi there!<br>
This is an <b>HTML</b> email.
</p>
</body>
</html>
"""
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)
mit smtplib.SMTP("smtp.gmail.com", 587) als server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
Dieses Beispiel sendet eine E-Mail mit sowohl einer plain text- als auch einer HTML-Version. Es ist wie das Senden eines Briefes mit einer schicken Umschlag!
Dateianhänge als E-Mail senden
Was tun wir, wenn wir eine Datei zusammen mit unserer E-Mail senden möchten? Kein Problem! So geht's:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "dein_passwort"
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "E-Mail mit Anhang"
body = "Dies ist eine E-Mail mit einem Anhang."
message.attach(MIMEText(body, "plain"))
filename = "dokument.pdf" # Ersetzen durch deinen Dateinamen
attachment = open(filename, "rb")
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}",
)
message.attach(part)
mit smtplib.SMTP("smtp.gmail.com", 587) als server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
Dieses Skript hängt eine Datei an deine E-Mail an. Es ist wie das Hinzufügen eines Pakets zu deinem Brief!
E-Mail mit Gmail's SMTP-Server senden
Im Laufe dieses Tutorials haben wir den SMTP-Server von Gmail verwendet. Hier ist eine schnelle Referenztabelle für gängige SMTP-Server:
E-Mail-Anbieter | SMTP-Server | Port |
---|---|---|
Gmail | smtp.gmail.com | 587 |
Outlook | smtp-mail.outlook.com | 587 |
Yahoo Mail | smtp.mail.yahoo.com | 587 |
Beachtet, dass ihr bei der Verwendung von Gmail möglicherweise "Less secure app access" aktivieren oder ein "App Password" verwenden müsst, wenn ihr 2-Faktor-Authentifizierung aktiviert habt.
Und da habt ihr es, Leute! Ihr seid nun ausgerüstet, um wie ein Python-Profi E-Mails zu senden. Denkt daran, mit großer Macht kommt große Verantwortung - nutzt eure neuen E-Mail-Senden-Fähigkeiten weise! Happy coding, und möge eure E-Mails immer ihr Ziel erreichen!
Credits: Image by storyset