我编写了一个程序,该程序通过gmail向我发送了一个计算所得的变量。但是,我只看到整个列表中的147行中只有几行应该看到[这就是我得到的1,但我希望看到每一行。
我发现了一个类似的问题:Output data from all columns in a dataframe in pandas,但是它只能在shell中正确显示。当我尝试链接中提到的这些方法时,我收到一条仅包含“无”或完全空白的消息。我不知道为什么它不起作用。
我的代码:
import pandas as pd
import smtplib
import tabulate
from io import StringIO
colnames = ['Hatarmetszek', 'Ora', 'diff']
data = pd.read_csv('calculatedvalue.csv', names=colnames)
gmail_user='mvm.napiadat@gmail.com'
gmail_password='password'
print (data) #modification work here
msg = "\r\n".join([
"From: user_me@gmail.com",
"To: user_you@gmail.com",
"Subject: napi adatok",
"",
str(data) # but don't here, this is the original one, which sends me the picture
])
sent_from='mvm.napiadat@gmail.com'
to=['bnyakas@mvmp.hu']
server=smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(gmail_user,gmail_password)
server.sendmail(sent_from,to,msg)
server.quit()
感谢您的帮助。
谢谢。
答案 0 :(得分:-1)
str(data)
不是将数据框转换为字符串表示形式的正确方法。
str(data)
将换行符(\n
)和回车符(\r
)字符转储到邮件正文中,从而使电子邮件呈现混乱。
使用body = data.to_html()
以html行格式获取数据框。发送此body
作为电子邮件内容。
您还必须进行其他更改以发送html而不是纯文本作为电子邮件正文。
from email.mime.text import MIMEText
msg = MIMEText(data.to_html(), 'html')
msg['From'] = 'from email id'
msg['To'] = 'to email id'
msg['Subject'] = subject
....
....
server.sendmail(sent_from, to, msg.as_string())