Інші відповіді чудові, хоча я все ж хотів поділитися іншим підходом у випадку, якщо хтось шукає альтернативи.
Основна відмінність тут полягає в тому, що, використовуючи такий підхід, ви можете використовувати 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())
Я сподіваюся, що це допомагає! :-)