使用python将多个CSV内容组合到电子邮件正文中

时间:2018-07-26 14:36:19

标签: python email

我有多个CSV文件,例如CSV1和CSV2以下,并且需要使用python将两个csv合并到电子邮件正文中

CSV1 :-
S.No Name Student 
1    Rishabh Engg
2    Samee   Engg

CSV1 :-
S.No Name Student 
1    Ankit   Med
2    Arjun   Engg

=====Expected output i need is like below :-===========

Dear Rishabh ,

PFB the Data :-

CSV1 :-
S.No Name Student 
1    Rishabh Engg
2    Samee   Engg

CSV1 :-
S.No Name Student 
1    Ankit   Med
2    Arjun   Engg

关于, 瑞沙(Rishabh Jaiswal)

=======================

仅供参考,我尝试并成功地通过以下代码帮助将单个csv制作到电子邮件正文中:-

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()

1 个答案:

答案 0 :(得分:0)

为了合并两个csv文件中的数据,您需要从两个文件中读取数据。一种简单的方法:

import csv
with open('csv1.csv', 'r') as csv1, open('csv2.csv') as csv2:
    reader1 = csv.reader(csv1, delimiter=',')
    reader2 = csv.reader(csv2, delimiter=',')
    all_text = str()
    for row in reader1:
        all_text += ' '.join(row) + '\n'
    for row in reader2:
        all_text += ' '.join(row) + '\n'
    print all_text

这将成功地将csv文件中的数据合并为单个字符串。您可以尝试使用all_text字符串的格式。至于发送电子邮件,似乎您可以通过python成功完成SMTP。

还有一个名为mailmerge的整洁的python程序包,该程序包将来自csv数据https://github.com/awdeorio/mailmerge的电子邮件模板化,不知道您是要模板来自csv文件数据的电子邮件,还是您的动机是什么,但是也许这是对您有用:)