Table 使用 Python Exchangelib 库在电子邮件正文中格式化

Table Format in email body using Python Exchangelib library

我正在 python 探索使用 库编写电子邮件,正文内容包含 table 内容。

我试过在正文内容中添加 table 的代码。

    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 交换电子邮件中看起来像这样:

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

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

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

您可以在 https://github.com/ecederstrand/exchangelib#creating-updating-deleting-sending-and-moving

阅读有关创建带有 HTML 正文的电子邮件的信息