HTML хорошо отображается в браузере, но не в электронной почте (HTML генерируется с использованием pandas dataframe) - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь отправлять автоматические электронные письма (содержащие tabled) в python, используя кадры данных pandas.Когда я генерирую HTML для таблицы и открываю ее в браузере, все отлично работает.Когда я пытаюсь отобразить тот же HTML в электронном письме, некоторые данные отсутствуют.

HTML отображается в браузере HTML rendered in browser

HTML отображается в электронной почте HTML rendered in Email

Это код, который я использую для создания HTML -

def csvToJinjaHTML(csvContent):

    print("Pandas: Set the max_colwidth to -1 for unlimited string length")
    pd.set_option("display.max_colwidth",-1)

    print("Pandas: Create a Pandas table from CSV content")
    pandasTable = pd.read_csv(StringIO(csvContent), index_col=False)

    # pandasTable is the dataframe that we want to beautify
    print(pandasTable)

    stylerObject = pandasTable.style

    styledHTML = (stylerObject
        .set_table_attributes('border="1" class="dataframe table table-hover table-bordered"')
        .set_properties(**{'font-size': '16pt', 'font-family': 'Calibri'})
        # .set_properties(subset=['6', '5'], **{'width': '300px'})
        .applymap(colour, subset=['ORGANIZATION'])
        .set_precision(3)
        .set_table_styles(
            [{'selector': 'tr:nth-of-type(odd)',
            'props': [('background', '#eee')]}, 
            {'selector': 'tr:nth-of-type(even)',
            'props': [('background', 'white')]},
            {'selector': 'th',
            'props': [('background', '#606060'), 
                        ('color', 'white'),
                        ('font-family', 'verdana')]},
            {'selector': 'td',
            'props': [('font-family', 'verdana')]},
            ]
        ).hide_index()
        .render()
    )

    with open('myJinjaTable.html', 'w') as f:
        print("Writing an HTML file to view the beautified Jinja table")
        f.write(styledHTML)

    return styledHTML

1 Ответ

0 голосов
/ 05 июня 2019

Разобрался. Длина ссылок HREF была слишком длинной, очевидно. Я уменьшил размер ссылок, и он отображается как ожидалось.

...