Другие ответы превосходны, хотя я все еще хотел поделиться другим подходом на случай, если кто-то ищет альтернативы.
Основное отличие здесь заключается в том, что используя этот подход, вы можете использовать HTML / CSS для форматирования вашего сообщения, чтобы вы могли проявить творческий подход и придать стиль своей электронной почте. Хотя вы не обязаны использовать HTML, вы также можете использовать только простой текст.
Обратите внимание, что эта функция принимает отправку электронной почты нескольким получателям, а также позволяет прикреплять несколько файлов.
Я только пробовал это на Python 2, но я думаю, что он должен работать на 3, а также:
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())
Надеюсь, это поможет! :-)