123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import smtplib
- from pathlib import Path
- from email.mime.multipart import MIMEMultipart
- from email.mime.base import MIMEBase
- from email.mime.text import MIMEText
- from email.utils import COMMASPACE, formatdate
- from email import encoders
-
-
- def send_mail(send_from, send_to, subject, message, files=[],
- server="localhost", username='', password='',
- use_tls=True):
- """Compose and send email with provided info and attachments.
-
- Args:
- send_from (str): from name
- send_to (list[str]): to name(s)
- subject (str): message title
- message (str): message body
- files (list[str]): list of file paths to be attached to email
- server (str): mail server host name
- username (str): server auth username
- password (str): server auth password
- use_tls (bool): use TLS mode
- """
- msg = MIMEMultipart()
- msg['From'] = send_from
- msg['To'] = send_to
- msg['Date'] = formatdate(localtime=True)
- msg['Subject'] = subject
-
- msg.attach(MIMEText(message))
-
- for path in files:
- part = MIMEBase('application', "octet-stream")
- with open(path, 'rb') as file:
- part.set_payload(file.read())
- encoders.encode_base64(part)
- part.add_header('Content-Disposition',
- 'attachment; filename={}'.format(Path(path).name))
- msg.attach(part)
-
- smtp = smtplib.SMTP(server)
- if use_tls:
- smtp.starttls()
- smtp.login(username, password)
- smtp.sendmail(send_from, send_to.split(', '), msg.as_string())
- smtp.quit()
|