#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
вместо этого.
Комментарии:
1. Большое спасибо! Это работает, за исключением текста в моей почте. Тело не отправляется… в любом случае, чтобы отправить оба? Предпочтительно текст, затем приведенную ниже HTML-таблицу
2. Зачем вам что-либо в теле, если вы хотите отправить HTMLBody? Все должно быть в HTMLBody. Вы можете отправлять почту как обычный текст или как HTML, а не оба (откройте Outllok и проверьте настройки).