Python 3: pretty_html_table возвращает HTML-текст, а не таблицу

#python #html

#python #HTML

Вопрос:

Я пишу скрипт для отправки по электронной почте фрейма данных pandas в виде таблицы нескольким людям. У меня есть мой фрейм данных frame :

      SITE  ...   VISITS
438     1  ...      104
439     2  ...      104
440     3  ...      104
504     4  ...      215
 

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

 from pretty_html_table import build_table

html_table = build_table(frame, 'blue_light')
 

Однако вместо отправки таблицы по электронной почте скрипт отправляет по электронной почте кучу HTML-текста!

 <p><table border="0" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th style = "background-color: #FFFFFF;font-family: Century Gothic;font-size: medium;color: #305496;text-align: left;border-bottom: 2px solid #305496;padding: 0px 20px 0px 0px">SITE</th>
etcetera, etcetera ...     
 

Я пытаюсь добавить эту таблицу в электронное письмо следующим образом:

 import win32com.client as win32

def report_email(email):        
    html_table = build_table(frame, 'blue_light')
    
    outlook = win32.Dispatch('outlook.application')
    mail = outlook.CreateItem(0)
    mail.To = email
    mail.Subject = 'Table below'
    mail.Body  = "Hi, here is a table"   html_table
    
    return mail.Send()
 

Большое спасибо за всю вашу помощь!

Ответ №1:

pretty_html_table.build_table ожидается, что он вернет HTML-код для таблицы. Проблема в том, что вы используете mail.Body . Используйте mail.HTMLBody вместо этого.

Вот MailItem .Документы HTMLBody

Комментарии:

1. Большое спасибо! Это работает, за исключением текста в моей почте. Тело не отправляется… в любом случае, чтобы отправить оба? Предпочтительно текст, затем приведенную ниже HTML-таблицу

2. Зачем вам что-либо в теле, если вы хотите отправить HTMLBody? Все должно быть в HTMLBody. Вы можете отправлять почту как обычный текст или как HTML, а не оба (откройте Outllok и проверьте настройки).