【问题标题】:Table Format in email body using Python Exchangelib library使用 Python Exchangelib 库的电子邮件正文中的表格格式
【发布时间】:2019-08-25 13:04:26
【问题描述】:

我正在 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

【问题讨论】:

  • 什么是DenizTbl?您的代码无法编译。
  • 为了更好地演示,我在问题中更改了一些定义,但 DenizTbl 错过了。它是数据表。它编辑了我的问题。感谢您的考虑

标签: exchangelib python exchangelib


【解决方案1】:

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

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

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

【讨论】:

  • 我尝试了您的建议,它适用于 HTML 代码手动键入的表格。你能指导我如何将提取的DataTable"test.xlsx" 更改为 HTML 代码?
  • 这里是手动写的表格代码:body=HTMLBody('<style>table, th, td { border: 1px solid black;}</style><table> <tr><th>Firstname</th><th>Lastname</th> <th>Age</th></tr><tr><td>Jill</td><td>Smith</td> <td>50</td></tr><tr><td>Eve</td><td>Jackson</td> <td>94</td></tr></table>')
  • Pandas 显然有一个可以使用的.to_html() 方法:pandas.pydata.org/pandas-docs/version/0.23.4/generated/…
  • 感谢您的宝贵支持。我使用DataHtml = pd.DataFrame.to_html(DataTable ) 将表格数据更改为html 代码,然后使用body = HTMLBody(DataHtml) 交换正文
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2014-02-10
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 2011-06-02
  • 2020-05-09
  • 1970-01-01
相关资源
最近更新 更多