Các câu trả lời khác là tuyệt vời, mặc dù tôi vẫn muốn chia sẻ một cách tiếp cận khác trong trường hợp ai đó đang tìm kiếm giải pháp thay thế.
Sự khác biệt chính ở đây là sử dụng phương pháp này, bạn có thể sử dụng HTML / CSS để định dạng thư của mình, do đó bạn có thể sáng tạo và đưa ra một số kiểu dáng cho email của mình. Mặc dù bạn không bắt buộc sử dụng HTML, bạn vẫn có thể chỉ sử dụng văn bản thuần túy.
Lưu ý rằng chức năng này chấp nhận gửi email đến nhiều người nhận và cũng cho phép đính kèm nhiều tệp.
Tôi mới chỉ thử cái này trên Python 2, nhưng tôi nghĩ nó cũng hoạt động tốt trên cả 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())
Tôi hi vọng cái này giúp được! :-)