Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Exchange Web服务获取消息ID_Java_Exchangewebservices_Ewsjavaapi - Fatal编程技术网

Java Exchange Web服务获取消息ID

Java Exchange Web服务获取消息ID,java,exchangewebservices,ewsjavaapi,Java,Exchangewebservices,Ewsjavaapi,我正在使用尝试同步来自Exchange邮箱的邮件。我能够获得自上次同步日期以来创建的所有新邮件的列表,但是,我确实希望在从exchange加载邮件之前找到邮件的属性 背景:我正在尝试将EWS同步集成到现有的邮件存储系统中。消息ID标识仅用于性能原因,因为我们的系统已经在EWS之外处理了数百万条消息。必须再次下载它们将导致巨大的性能开销 //Sample code to fetch the message from sync ChangeCollection<ItemChange>

我正在使用尝试同步来自Exchange邮箱的邮件。我能够获得自上次同步日期以来创建的所有新邮件的列表,但是,我确实希望在从exchange加载邮件之前找到邮件的属性

背景:我正在尝试将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
    }
但是,这仍然会加载整个消息

另一种解决方案是开始通过ItemId关联消息,但即使这样也不完美:


有关消息ID的更多信息:

我认为解决方案是:

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

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

受此答案启发:

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