Spark On-Prem EWS - CDATA JDBC 读取返回空正文且无附件列表

问题描述 投票:0回答:1

我尝试使用 CDATA JDBC 驱动程序从 EWS On-Prem 服务器接收电子邮件的正文和附件 ID,但是它始终返回 null。主题行、ItemId、日期和涉及的电子邮件地址均正确返回。 CDATA 文档指出我应该通过传统查询查看内容。 Spark版本是3.0.0,scala版本是2.12.12。管理员帐户是否缺少允许其专门查看电子邮件正文的权限,或者这是一个已知问题?

var query = "select Body, UniqueBody, UniqueBodyType, Attachments, HasAttachments FROM Inbox"

val df = spark.sqlContext.read.format("jdbc")
          .option("url", url)
          .option("query", query)
          .option(DRIVER, CDATA_EXCHANGE_DRIVER)
          .load()

result stored in dataframe

scala apache-spark exchange-server exchangewebservices cdata
1个回答
0
投票

用于访问 Exchange 服务器的管理员帐户可能缺乏查看电子邮件正文或附件所需的权限。确保该帐户具有以下角色: 应用程序模拟:授予模拟用户并读取其邮箱数据的访问权限。 邮箱搜索:提供对邮箱内容的读取访问权限。

关注 CData 驱动程序文档总是好的。它们有很多连接属性来控制几乎所有事情。

IncludeContent
属性必须在 JDBC 连接设置中显式启用才能检索其他内容,例如收件箱中电子邮件的正文字段

默认情况下,检索附加内容(如正文字段)被禁用,因为它在性能和资源使用方面可能会很昂贵。显式启用 IncludeContent 可确保只有了解性能权衡的用户才能检索此类数据。

这里是在线文档的链接:https://cdn.cdata.com/help/CEK/jdbc/RSBExchange_p_IncludeContent.htm

旧版本的 EWS 可能不完全支持某些字段(例如 UniqueBody 或附件)。您可以使用直接 EWS API 工具(例如 Postman 或使用 Exchangelib 的 Python 脚本)测试获取相同字段,以确认问题是与服务器相关还是与驱动程序相关。

© www.soinside.com 2019 - 2024. All rights reserved.