gpt4 book ai didi

java - Exchange Web 服务获取消息消息 ID

转载 作者:行者123 更新时间:2023-11-29 05:21:47 25 4
gpt4 key购买 nike

我正在使用 Java EWS library尝试从 Exchange 邮箱同步邮件。我能够获得自上次同步日期以来创建的所有新消息的列表,但是,我真的很想找出 Message-ID从交换加载消息之前的消息属性。

背景:我正在尝试将 EWS 同步集成到现有的邮件存储系统中。消息 ID 标识仅出于性能原因,因为我们的系统已经在 EWS 之外处理了数百万条消息。必须再次下载它们会导致重大的性能开销。

//Sample code to fetch the message from sync

ChangeCollection<ItemChange> icc = service.syncFolderItems( folder.getId()
, PropertySet.FirstClassProperties // propertySet
, null // ignoredItemIds
, 25 // maxChangesReturned
, SyncFolderItemsScope.NormalItems
, currSyncState );

for ( ItemChange ic : icc )
{
if (ic.getChangeType() == ChangeType.Create)
{
Item item = ic.getItem();
//how to get the Message-ID
}

目前,我认为检索 Message-ID 的最佳方法是在调用 ic.load() 之后调用 ic.getItem().getInternetMessageHeaders() .但这需要从交换中加载整个消息,我会避免这一步。

编辑:获取消息 ID 的另一种方法是

EmailMessage em = EmailMessage.bind( service, item.getId() );
em.getInternetMessageId()

但是,这仍然会加载整个消息。

另一种解决方案是开始通过 ItemId 关联消息,但即使那样也不完美:http://daniellang.net/exchange-web-services-itemid-is-not-permanent/

有关消息 ID 的更多信息:http://en.wikipedia.org/wiki/Message-ID

最佳答案

我相信解决方案是这样的:

EmailMessage em = EmailMessage.bind( service, item.getId(),
new PropertySet( EmailMessageSchema.InternetMessageId) );

解释:

我们必须将项目绑定(bind)到电子邮件消息,但我们不是获取所有信息,而是仅通过 PropertySet 参数请求 ID 和我们想要的任何其他属性。

受此答案启发:https://stackoverflow.com/a/22482779/138228

关于java - Exchange Web 服务获取消息消息 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com