我尝试使用 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()
用于访问 Exchange 服务器的管理员帐户可能缺乏查看电子邮件正文或附件所需的权限。确保该帐户具有以下角色: 应用程序模拟:授予模拟用户并读取其邮箱数据的访问权限。 邮箱搜索:提供对邮箱内容的读取访问权限。
关注 CData 驱动程序文档总是好的。它们有很多连接属性来控制几乎所有事情。
IncludeContent
属性必须在 JDBC 连接设置中显式启用才能检索其他内容,例如收件箱中电子邮件的正文字段
默认情况下,检索附加内容(如正文字段)被禁用,因为它在性能和资源使用方面可能会很昂贵。显式启用 IncludeContent 可确保只有了解性能权衡的用户才能检索此类数据。
这里是在线文档的链接:https://cdn.cdata.com/help/CEK/jdbc/RSBExchange_p_IncludeContent.htm
旧版本的 EWS 可能不完全支持某些字段(例如 UniqueBody 或附件)。您可以使用直接 EWS API 工具(例如 Postman 或使用 Exchangelib 的 Python 脚本)测试获取相同字段,以确认问题是与服务器相关还是与驱动程序相关。