【问题标题】:Use ActiveSync to sync old mails使用 ActiveSync 同步旧邮件
【发布时间】:2011-10-13 14:03:20
【问题描述】:

我正在尝试构建 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)

【问题讨论】:

    标签: sync hotmail activesync


    【解决方案1】:

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

    【讨论】:

    • 哇。我从没想过会是这样,但很高兴知道!
    【解决方案2】:

    确保您没有传递FilterType 元素,这会限制返回的对象范围。

    其次,注意Sync response 中的MoreAvailable 元素,这表明您尚未收到来自服务器的所有对象。

    [根据cmets编辑]

    【讨论】:

    • 我没有使用 FilterType 元素。从链接中,“如果省略 FilterType 元素,所有对象都从服务器发送,而不考虑它们的年龄。”
    • 你说得对,看起来它是可选的。在这种情况下,您是否在响应中接收到 MoreAvailable 元素以指示更多对象(超出最初返回的对象)可用?
    • 我已将请求-响应 Xml 添加到我的问题中。未收到 MoreAvailable 元素。
    猜你喜欢
    • 2012-08-29
    • 2015-04-30
    • 2015-03-18
    • 1970-01-01
    • 2011-07-07
    • 2011-05-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多