使用ActiveSync同步旧邮件



我正在尝试构建一个ActiveSync客户端应用程序。我有一个Hotmail测试账户,里面有过去6个月的邮件,大多数都没有读过。Hotmail使用ActiveSync v2.5。我尝试了同步命令,但我只能得到新邮件,旧的(> 3个月)邮件不出现!

是我错过了什么,还是这就是它的工作原理?

[编辑:包括请求和响应Xml,使其更清晰]

初始请求:

<?xml version="1.0" ?>
<Sync xmlns="AirSync:">
    <Collections>
        <Collection>
            <Class>Email</Class>
            <SyncKey>0</SyncKey>
            <CollectionId>00000000-0000-0000-0000-000000000001</CollectionId>
            <WindowSize>512</WindowSize>
        </Collection>
    </Collections>
</Sync>

反应:

<?xml version="1.0" encoding="UTF-8" ?>
<Sync xmlns="AirSync">
    <Collections>
        <Collection>
            <Class>Email</Class>
            <SyncKey>000000000{813672f0-cc63-4308-9a33-4e8c1d0f351e}0</SyncKey>
            <CollectionId>00000000-0000-0000-0000-000000000001</CollectionId>
            <Status>1</Status>
        </Collection>
    </Collections>
</Sync>
请求:

<?xml version="1.0" ?>
<Sync xmlns="AirSync:">
    <Collections>
        <Collection>
            <Class>Email</Class>
            <SyncKey>000000000{813672f0-cc63-4308-9a33-4e8c1d0f351e}0</SyncKey>
            <CollectionId>00000000-0000-0000-0000-000000000001</CollectionId>
            <GetChanges />
            <WindowSize>512</WindowSize>
        </Collection>
    </Collections>
</Sync>

反应:

<?xml version="1.0" encoding="UTF-8" ?>
<Sync xmlns="AirSync">
    <Collections>
        <Collection>
            <Class>Email</Class>
            <SyncKey>000000000{13704907-A726-4149-8186-E3EEE98D9918}1</SyncKey>
            <CollectionId>00000000-0000-0000-0000-000000000001</CollectionId>
            <Status>1</Status>
            <Commands>
                <Add>[Contains email details]</Add>
            </Commands>
        </Collection>
    </Collections>
</Sync>

同样,同样的代码也适用于GMail帐户(使用ActiveSync v12.0)

显然,Hotmail服务器对不同设备的响应是不同的。我修改了发送给服务器的User-Agent值Apple-iPhone/705.18,它开始工作了!

确保你没有传递一个会限制返回对象范围的FilterType元素。

其次,注意Sync响应中的MoreAvailable元素,这将表明您尚未从服务器接收到所有对象。

[根据评论编辑]

相关内容

  • 没有找到相关文章

最新更新