Невозможно увидеть фрейм данных панд в теле письма при использовании email.mime - PullRequest
0 голосов
/ 04 июня 2018

У меня есть следующий фрейм данных (my_df) в pandas:

Date    Value1  Value2  Value3
01/05/2018  407 8   304
02/05/2018  879 3   82
03/05/2018  998 407 435
04/05/2018  399 479 349
05/05/2018  394 299 705
06/05/2018  840 524 710

Я преобразую фрейм данных в формат html, используя следующий код:

my_df.to_html('df1.html')

При попытке использовать его вмоя электронная почта как тело, она отправляет электронную почту со всем текстом, но не с фреймом данных.Любая идея, что я могу делать неправильно?

Я использую следующий код для отправки электронного письма:

strFrom = 'xyz'
    strTo = ['xyz']
    cc = ['abc']

    msgRoot = MIMEMultipart('related')
    msgRoot['Subject'] = 'test'
    msgRoot['From'] = strFrom
    msgRoot['To'] = ",".join(strTo)
    msgRoot['Cc'] = ",".join(cc)
    msgRoot.preamble = 'This is a multi-part message in MIME format.'
    text1 = "\nABC:\n\nTable 1(xyz)"    

    part1 = MIMEText(text1, 'plain')
    part2 = MIMEText('df1.html', 'html')
    msgRoot.attach(part1)
    msgRoot.attach(part2)    

    server = smtplib.SMTP(email_host)
    server.set_debuglevel(1)
    server.sendmail(strFrom, strTo, msgRoot.as_string())
    server.quit()

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете напрямую отобразить html своего фрейма данных в тело письма.

Пример:

strFrom = 'xyz'
strTo = ['xyz']
cc = ['abc']

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'test'
msgRoot['From'] = strFrom
msgRoot['To'] = ",".join(strTo)
msgRoot['Cc'] = ",".join(cc)
msgRoot.preamble = 'This is a multi-part message in MIME format.'

text1 =  """<html>
  <head></head>
  <body>
    <h4>ABC: Table 1(xyz)</h4>
    {0}
  </body>
</html>
""".format(df_test.to_html())


part1 = MIMEText(text1, 'html')
msgRoot.attach(part1)


server = smtplib.SMTP(email_host)
server.set_debuglevel(1)
server.sendmail(strFrom, strTo, msgRoot.as_string())
server.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...