Используйте ActiveSync для синхронизации старых писем - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь создать клиентское приложение ActiveSync. У меня есть тестовая учетная запись Hotmail, в которой хранятся письма за последние 6 месяцев, большинство из которых непрочитанные. Hotmail использует ActiveSync v2.5. Я попробовал команду Sync, но могу получать только новые письма, старые (> 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)

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Судя по всему, серверы Hotmail по-разному реагируют на разные устройства.Я изменил значение User-Agent, отправленное на сервер на Apple-iPhone / 705.18, и оно начало работать!

0 голосов
/ 12 октября 2011

Убедитесь, что вы не передаете элемент FilterType, который будет ограничивать диапазон возвращаемых объектов.

Во-вторых, обратите внимание на элемент MoreAvailable в ответе Sync , который будет указывать, что вы еще не получили все объекты с сервера.

[Отредактировано на основе комментариев]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...