import csv from tabulate import tabulate from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib me = 'xxx@gmail.com' password = 'yyyzzz!!2' server = 'smtp.gmail.com:587' you = 'qqq@gmail.com' text = """ Hello, Friend. Here is your data: {table} Regards, Me""" html = """ <html><body><p>Hello, Friend.</p> <p>Here is your data:</p> {table} <p>Regards,</p> <p>Me</p> </body></html> """ with open('input.csv') as input_file: reader = csv.reader(input_file) data = list(reader) text = text.format(table=tabulate(data, headers="firstrow", tablefmt="grid")) html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html")) message = MIMEMultipart( "alternative", None, [MIMEText(text), MIMEText(html,'html')]) message['Subject'] = "Your data" message['From'] = me message['To'] = you server = smtplib.SMTP(server) server.ehlo() server.starttls() server.login(me, password) server.sendmail(me, you, message.as_string()) server.quit()