使用Python Exchangelib库的电子邮件正文中的表格式

时间:2019-08-25 13:04:26

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

上阅读有关使用HTML正文创建电子邮件的信息。