in dusty/reporters/email/helper.py [0:0]
def send_with_cc(self, mail_to, mail_cc, subject, html_body="", attachments=None): # pylint: disable=R0913
""" Send mail """
message = MIMEMultipart("alternative")
message["From"] = self.login
message["To"] = ", ".join(mail_to)
message["Cc"] = ", ".join(mail_cc)
message["Subject"] = subject
message.attach(MIMEText(html_body, "html"))
if attachments:
if isinstance(attachments, str):
attachments = [attachments]
for item in attachments:
if isinstance(item, tuple):
filepath, filename = item
else:
filepath = item
filename = item.split('/')[-1]
with open(filepath, "rb") as file:
part = MIMEBase("application", "octet-stream")
part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}"
)
message.attach(part)
try:
self.connect()
self.connection.sendmail(message["From"], mail_to + mail_cc, message.as_string())
except: # pylint: disable=W0702
log.exception("Failed to send email")
error = Error(
tool="EMail",
error="Failed to send email",
details=f"```\n{traceback.format_exc()}\n```"
)
self.context.errors.append(error)
finally:
if self.connection:
self.connection.quit()