首页 > 解决方案 > 使用 Python Exchangelib 库的电子邮件正文中的表格格式

问题描述

我正在 python 中探索使用带有包含表格内容的正文内容的

我已经尝试了在正文内容中添加表格的代码。

    import pandas as pd
    import numpy as np
    from exchangelib import Account, Credentials, Message, Mailbox
    dfReport = pd.read_excel("test.xlsx")
    FilteredData = dfReport[dfReport["ColumnID"].str.contains('MyCharacter')]
    DataTable = pd.pivot_table(FilteredData ,index="Processor",values="TicketID",aggfunc=np.count_nonzero,margins=True)

    EmailAdd = 'XXX@YYY.Z'
    EmailPass = 'XXXXXX'
    MyAccount = Account(EmailAdd,credentials=Credentials(EmailAdd,EmailPass),autodiscover=True)

    MyMessage = Message(account=MyAccount, folder=MyAccount.sent,subject='Daily motivation', body=DataTable, to_recipients=[Mailbox(email_address='AAA@BBB.CC')])

    MyMessage.send_and_save()

消息正文中应有以下演示:

    Name    Count
    Item 1  53
    Item 2  38
    Item 3  123
    Item 4  175
    Item 5  212

但在 Outlook Exchange 电子邮件看起来像这样:

    Name
    Count
    Item 1         53
    Item 2                38
    Item 3     123
    Item 4    175
    Item 4            212

标签: pythonexchangelib

解决方案


要正确控制电子邮件正文的格式,您需要将正文作为 HTML 发送。

最简单的可能是将数据框转换为字符串,将其封装在<pre>标签中并定义等距字体。

您可以在https://github.com/ecederstrand/exchangelib#creating-updating-deleting-sending-and-moving阅读有关使用 HTML 正文创建电子邮件的内容


推荐阅读