import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate

#================================================
# Change these to IHG setting
#================================================
username = "cheung@emory.edu"
password = "abc123"
mail_server = "smtp.office365.com"

def send_mail(send_from, send_to, send_cc, subject, text, files=None):

    assert isinstance(send_to, list)
    if send_cc != None:
        assert isinstance(send_cc, list)
    if files != None:
        assert isinstance(files, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = COMMASPACE.join(send_to)
    if send_cc != None:
        msg['Cc'] = COMMASPACE.join(send_cc)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach(MIMEText(text))

    for f in files or []:
        with open(f, "rb") as fil:
            part = MIMEApplication(
                fil.read(),
                Name=basename(f)
            )
        # After the file is closed
        part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
        msg.attach(part)

    # Send the email
    connection = smtplib.SMTP(host=mail_server, port=587)
    connection.starttls()
    connection.login(username,password)
    connection.send_message(msg)
    connection.quit()


mail_subject = "Python function to attach a file"
mail_body = "Test Python send mail function - with attachment."
mail_from = "cheung@emory.edu"
mail_to = ["cheung@emory.edu", "dumboride@yahoo.com"]
#mail_to = ["cheung@emory.edu", "sycheung@yahoo.com"]
#mail_to = ["cheung@emory.edu"]
#mail_to = ["dumboride@yahoo.com"]
mail_cc = ["cheung@emory.edu", "sycheung@yahoo.com"]

attachFileName = "inp"
attachFilePath = "/home/cheung/ML/Stella/email"
attachment = attachFilePath + "/" + attachFileName

send_mail(mail_from, mail_to, None, "Test function",
		mail_body, [attachment])


