Diğer cevaplar mükemmel, ancak birileri alternatif arıyorsa hala farklı bir yaklaşım paylaşmak istedim.
Buradaki temel fark, bu yaklaşımı kullanarak mesajınızı biçimlendirmek için HTML / CSS kullanabilmenizdir, böylece yaratıcı olabilir ve e-postanıza biraz stil verebilirsiniz. HTML kullanmaya zorlanmasanız da, yine de yalnızca düz metin kullanabilirsiniz.
Bu işlevin, e-postayı birden çok alıcıya göndermeyi kabul ettiğine ve ayrıca birden fazla dosya eklemeye izin verdiğine dikkat edin.
Ben sadece Python 2 üzerinde denedim, ama 3 de iyi çalışması gerektiğini düşünüyorum:
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())
Umarım bu yardımcı olur! :-)