我正在尝试通过邮件发送熊猫数据框。我尝试过,但无法获得它。我的代码是
代码
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()
答案 0 :(得分:0)
首先,请勿在您的问题中共享个人信息作为邮件地址。然后,主要问题是您要将df
转换为str
而不是html
对象。
# declare mixed MIME
msg = MIMEMultipart('mixed')
# convert df to html
table = df.to_html()
# attach to your mail
msg.attach(MIMEText(table, 'html')
答案 1 :(得分:0)
您的HTML仅包含一个表格,而没有格式化为完整的HTML页面。但这在Thunderbird上可以正确读取。无论如何,我会在表格前后添加最小值,以使其看起来像是可接受的HTML页面:
...
prolog='''<html>
<head><title>Incident details</title></head>
<body>
'''
epilog = '</body></html>'
html_body = prolog + df + epilog
...
那不是一个非常好的HTML,但是至少它有一个html
块,一个包含标题和正文的标头。这样,即使在容忍度较低的邮件阅读器上,它也应该可读。