【发布时间】:2022-06-13 15:01:49
【问题描述】:
我正在尝试将 Outlook 电子邮件正文内容保存到数据框,然后保存到 csv/excel,我们通常以表格格式从供应商处获取不同索引的价格,我尝试使用 Body_content = message.HTMLBody 但没有按预期工作。
因此,我可以使用 Body_content = message.Body 并打印 (df.To_string())。现在下一步是将这些值存储在 excel 表中,即使它是由以下格式的分析人员打开的。
我们不断从不同的供应商那里获得指数价格,如果这一个完美运行,我也会对其他供应商采用相同的方法。
输出
这就是它最终获得单列数据帧的方式
import pandas as pd
import win32com.client
import re
import os
import pandas
import datetime
from datetime import date
EMAIL_ACCOUNT = 'lakshmi@NY.com'
EMAIL_SUBJ_SEARCH_STRING = 'MSBPSCSP Index Price'
EMAIL_CONTNT = {'Ticker': [], 'TickerLevel': [], 'DATE': []}
out_app = win32com.client.gencache.EnsureDispatch("Outlook.Application")
out_namespace = out_app.GetNamespace("MAPI")
#lastWeekDateTime = dt.datetime.now() - dt.timedelta(days=1)
#lastWeekDateTime = lastWeekDateTime.strftime('%m/%d/%Y %H:%M %p')
root_folder = out_namespace.GetDefaultFolder(6)
out_iter_folder = root_folder.Folders['Email_Snapper']
#char_length_of_search_substring = len(EMAIL_SUBJ_SEARCH_STRING)
item_count = out_iter_folder.Items.Count
Flag = False
cnt = 1
if item_count > 0:
for i in range(item_count, 0, -1):
message = out_iter_folder.Items[i]
if EMAIL_SUBJ_SEARCH_STRING in message.Subject:
#message = message.Restrict("[ReceivedTime] >= '" + lastWeekDateTime + "'")
Body_content = message.Body
Body_content = Body_content[:Body_content.find("Disclaimer")].strip()
df = pd.DataFrame([Body_content])
print(df.to_string())
最终目标是将这些价格插入到 oracle 数据库中,方法是先将它们保存在 excel 中,或者如果可能的话直接从数据框中(这更好)
【问题讨论】:
-
"我尝试使用 Body_content = message.HTMLBody 但没有按预期工作" ... html 中是否有表格标签(例如
)?电子邮件是以纯文本还是 HTML 格式到达的?
标签: python pandas dataframe outlook win32com