Application which monitors a folder and sends each file via mail
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import smtplib
  2. from pathlib import Path
  3. from email.mime.multipart import MIMEMultipart
  4. from email.mime.base import MIMEBase
  5. from email.mime.text import MIMEText
  6. from email.utils import COMMASPACE, formatdate
  7. from email import encoders
  8. def send_mail(send_from, send_to, subject, message, files=[],
  9. server="localhost", username='', password='',
  10. use_tls=True):
  11. """Compose and send email with provided info and attachments.
  12. Args:
  13. send_from (str): from name
  14. send_to (list[str]): to name(s)
  15. subject (str): message title
  16. message (str): message body
  17. files (list[str]): list of file paths to be attached to email
  18. server (str): mail server host name
  19. username (str): server auth username
  20. password (str): server auth password
  21. use_tls (bool): use TLS mode
  22. """
  23. msg = MIMEMultipart()
  24. msg['From'] = send_from
  25. msg['To'] = send_to
  26. msg['Date'] = formatdate(localtime=True)
  27. msg['Subject'] = subject
  28. msg.attach(MIMEText(message))
  29. for path in files:
  30. part = MIMEBase('application', "octet-stream")
  31. with open(path, 'rb') as file:
  32. part.set_payload(file.read())
  33. encoders.encode_base64(part)
  34. part.add_header('Content-Disposition',
  35. 'attachment; filename={}'.format(Path(path).name))
  36. msg.attach(part)
  37. smtp = smtplib.SMTP(server)
  38. if use_tls:
  39. smtp.starttls()
  40. smtp.login(username, password)
  41. smtp.sendmail(send_from, send_to.split(', '), msg.as_string())
  42. smtp.quit()