Andere Antworten sind ausgezeichnet, obwohl ich immer noch einen anderen Ansatz teilen wollte, falls jemand nach Alternativen sucht.
Der Hauptunterschied besteht darin, dass Sie mit diesem Ansatz HTML / CSS zum Formatieren Ihrer Nachricht verwenden können, um kreativ zu werden und Ihrer E-Mail etwas Stil zu verleihen. Obwohl Sie nicht gezwungen sind, HTML zu verwenden, können Sie auch nur einfachen Text verwenden.
Beachten Sie, dass diese Funktion das Senden der E-Mail an mehrere Empfänger akzeptiert und auch das Anhängen mehrerer Dateien ermöglicht.
Ich habe dies nur auf Python 2 versucht, aber ich denke, es sollte auch auf 3 gut funktionieren:
import os.path
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
def send_email(subject, message, from_email, to_email=[], attachment=[]):
"""
:param subject: email subject
:param message: Body content of the email (string), can be HTML/CSS or plain text
:param from_email: Email address from where the email is sent
:param to_email: List of email recipients, example: ["a@a.com", "b@b.com"]
:param attachment: List of attachments, exmaple: ["file1.txt", "file2.txt"]
"""
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = from_email
msg['To'] = ", ".join(to_email)
msg.attach(MIMEText(message, 'html'))
for f in attachment:
with open(f, 'rb') as a_file:
basename = os.path.basename(f)
part = MIMEApplication(a_file.read(), Name=basename)
part['Content-Disposition'] = 'attachment; filename="%s"' % basename
msg.attach(part)
email = smtplib.SMTP('your-smtp-host-name.com')
email.sendmail(from_email, to_email, msg.as_string())
Ich hoffe das hilft! :-)