Untitled
unknown
plain_text
2 years ago
3.4 kB
1
Indexable
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders import sys import os import socket from airflow.hooks.base import BaseHook def sendmail(subject, body, to_mail_ids,emailBodyType, cc_mail = None, bcc_mail= None, file_attachment= None,sender_pass = None): try: conn = BaseHook.get_connection("email_config") hostMail=conn.host fromMail=conn.schema mailPort=conn.port mail_content = body #sender_address = sender_mail sender_pass = sender_pass receiver_address = to_mail_ids #host = host #port = port cc_mail_ids = cc_mail bcc_mail_ids = bcc_mail if cc_mail_ids and bcc_mail_ids : final_mail_ids = receiver_address + cc_mail_ids + bcc_mail_ids.split final_mail_ids =" , ".join(final_mail_ids) final_mail_ids = final_mail_ids.split(",") print(final_mail_ids) else: final_mail_ids =" , ".join(receiver_address) final_mail_ids = final_mail_ids.split(",") print(final_mail_ids) # Setup the MIME message = MIMEMultipart() message['From'] = fromMail message['To'] = " , ".join(receiver_address) message['Subject'] = str(socket.gethostbyname(socket.gethostname())) + "-" + subject if cc_mail_ids: message['Cc'] = " , ".join(cc_mail_ids) if bcc_mail_ids: message['Bcc'] = " , ".join(bcc_mail_ids) # The body and the attachments for the mail message.attach(MIMEText(mail_content, emailBodyType)) if file_attachment: if file_attachment != "" and os.path.exists(file_attachment): # open the file to be sent filename = os.path.basename(file_attachment) attachment = open(file_attachment, "rb") # instance of MIMEBase and named as p p = MIMEBase('application', 'octet-stream') # To change the payload into encoded form p.set_payload((attachment).read()) # encode into base64 encoders.encode_base64(p) p.add_header('Content-Disposition', "attachment; filename= %s" % filename) # attach the instance 'p' to instance 'msg' message.attach(p) text = message.as_string() # Create SMTP session for sending the mail session = smtplib.SMTP(hostMail, mailPort) # use gmail with port # session.starttls() # enable security # session.login(sender_address, sender_pass) # login with mail_id and password session.sendmail(fromMail, final_mail_ids, text) session.quit() return True except Exception as dbExcp: print("Exception - {} . Line No - {} ".format(str(dbExcp), str(sys.exc_info()[-1].tb_lineno)), None) return False if __name__ == '__main__': mailStatus = sendmail(hostMail, mailPort, fromMail, '', 'email test', 'hi', 'veerendrakumar.meka@tcs.com', '', '', '', 'plain') if mailStatus: print('Mail Sent') else: print('Mail Sending Failed :(')
Editor is loading...