Списки рассылки экспорта в Outlook + элементы, включенные в C # - PullRequest
0 голосов
/ 14 марта 2012

Я создаю код, который экспортирует контакты + списки рассылки из Outlook для сохранения их в BDD.

Я могу экспортировать контакты со следующим кодом:

mapiFolder.Items.Restrict([MessageClass] = \"IPM.Contact\);

После этого я делаю то же самое для списков рассылки

mapiFolder.Items.Restrict("[MessageClass] = \"IPM.DistList\"");

Я анализирую свои списки рассылки и сохраняю их с помощью библиотеки Redemption следующим образом:

foreach (DistListItem distributionListItem in distributionListItems)
                {
                    //use of Redemption to avoid a security message when accessing to contacts list
                    var safeList = new SafeDistList();

                    safeList.Item = distributionListItem;

                    var safeDistListExtended = new SafeDistListExtended(safeList, distributionListItem.DLName);

Как только я "прочитаю" все списки рассылки, самое время вставить их в BDD.

Первое: проверьте, что входит в каждый список рассылки, я имею в виду контакты или списки рассылки, которые сами могут содержать другие контакты или списки рассылки и т. Д.

var recipients = new List<SafeRecipient>();

        for (int counterMember = 1; counterMember <= pSafeDistListExtended.DistList.MemberCount; counterMember++)
        {
            SafeRecipient safeRecipient = pSafeDistListExtended.DistList.GetMember(counterMember);

            safeRecipient.Resolve();

            if (safeRecipient.Resolved)
            {
                recipients.Add(safeRecipient);                                
            }
        }

Моя проблема в том, что я могу добавить ContactItems в свой список рассылки, но не могу включить в список рассылки только их имена.

Что мне нужно, так это когда я анализирую цикл «GetMember», я добавляю объект «Список рассылки», действительно ли это список рассылки, включенный в другой.

Потому что сейчас я вижу все объекты, включенные в список рассылки, как объекты одного типа.

У кого-нибудь будет идея, как это сделать ??

Просто чтобы вы знали, что способ получить контакты с помощью петли

Member.Count

и GetMember(x)

далеко от идеала, потому что мы можем ожидать иерархию объектов. Список рассылки, содержащий ContactItems + или списки рассылки и так далее ...

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 марта 2012

Во-первых, вы можете переключиться на семейство объектов RDO вместо того, чтобы использовать OOM + Safe * Объекты объекта: http://www.dimastr.com/redemption/rdo_introduction.htm Во-вторых, RDODistListItem.GetMembers будет возвращать RDOAddressEntries. Для каждого объекта RDOAddressEntry в этой коллекции рекурсивно обработайте каждый объект - списки рассылки, в свою очередь, предоставят своих членов через коллекцию RDOAddressEntry.Members.

...