在数据块中阅读 outlook 电子邮件

Read outlook emails in databricks

我想使用 python 和 运行 使用数据块集群的脚本从 Microsoft Outlook 读取邮件。

我在我的本地机器上使用 win32com 并且能够阅读电子邮件。但是,当我尝试在 databricks 上安装相同的包时,似乎会抛出一条错误消息

DRIVER_LIBRARY_INSTALLATION_FAILURE. Error Message: org.apache.spark.SparkException: Process List(/databricks/python/bin/pip, install, pywin32, --disable-pip-version-check) exited with code 1. ERROR: Could not find a version that satisfies the requirement pywin32 ERROR: No matching distribution found for pywin32

示例代码如下

import win32com.client
import pandas as pd
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI").Folders

emails_list = [
'xyz@outlook.com'
]
subjects = []
categories = []
body_content = []
names = []
for id, name in enumerate(emails_list):
   
    folder = outlook(name)
    #print('Accessing email - ' , folder)
    inbox = folder.Folders("Inbox")
    message = inbox.Items
    message = message.GetFirst()
    body_content.append(message.Body)
    subjects.append(message.Subject)
    categories.append(message.Categories)
    names.append(name)
    
df = pd.DataFrame(list(zip(names,subjects,categories,body_content)), 
             columns=['names','subjects','categories','body_content'])
df.head(3)

Databricks 集群正在使用 Linux(具体来说,Ubuntu Linux),因此您不能使用专为 Windows 设计的 COM 库。您可能可以使用 IMAP 协议或类似协议访问 Office 365 中的电子邮件(请参阅 docs). Python has built-in imaplib library that could be used for that purpose, for example, like in the following article.