如何用python将表格式的数据帧发送到邮件

如何用python将表格式的数据帧发送到邮件,python,pandas,smtplib,Python,Pandas,Smtplib,我试图通过邮件发送熊猫数据帧。我试过了,但没能得到。我的代码是 代码 import pandas as pd import json import requests from requests.auth import HTTPBasicAuth import datetime import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import pdb

我试图通过邮件发送熊猫数据帧。我试过了,但没能得到。我的代码是

代码

import pandas as pd 
import json
import requests
from requests.auth import HTTPBasicAuth
import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import pdb

ticket_details=pd.DataFrame(list_values,
columns['incident',"short_description","priority","assignment_group"])


#converting a datframe into html table
df=ticket_details.to_html()
send ="xxx@xxx.com"
reciever="xxx@xxx.com"   
subject="incident details "
msg = MIMEMultipart('alternative')
msg['From'] = send
msg['To'] = reciever 
msg['Subject'] =subject      



html_body = str(df)
messagePlain = 'Look at the incident details'
msg.attach(MIMEText(messagePlain, 'plain'))
msg.attach(MIMEText(html_body, 'html')                           
server = smtplib.SMTP("xxx.com")
server.sendmail(send, reciever, msg.as_string())
server.quit()

首先,请不要在您的问题中以邮件地址的形式共享个人信息。然后,主要问题是您正在将
df
转换为
str
,而不是转换为
html
对象

#声明混合MIME
msg=MIMEMultipart('mixed')
#将df转换为html
table=df.to_html()
#附上你的邮件
msg.attach(MIMEText(表'html')

您的HTML仅包含一个表格,未格式化为完整的HTML页面。但Thunderbird可以正确读取。无论如何,我会在表格前后添加最小值,使其看起来像一个可接受的HTML页面:

...
prolog='''<html>
<head><title>Incident details</title></head>
<body>
'''
epilog = '</body></html>'

html_body = prolog + df + epilog
...
。。。
序言=“”
事件详情
'''
尾声=“”
html_body=prolog+df+epilog
...

这不是一个很好的HTML,但至少,它有一个
HTML
bloc,一个包含标题和正文的标题。这样,即使在容忍度较低的邮件阅读器上,它也应该是可读的。

你得到了什么?我什么也得不到,但如果我删除str(df)并只打印“df”然后我在邮件中得到字符串df你尝试了什么邮件客户端?现在它给了我html文件,我只需要在邮件正文中显示dataframe为什么不只是复制并粘贴?df.到剪贴板()然后粘贴到邮件正文中,但我没有得到你的答案