Как получить entryid письма в ews

131
22 июня 2019, 19:10

Я получаю сообщение из публичной папки и хочу узнать его entryid (как в интерропе):

Var service = ConnectToService();
var folder = GetFolder(service, "SomePublicFolder");
var items = folder.FindItems(new ItemView(1));
foreach (EmailMessage item in items)
{
    var EntryIdLikeOutlook = ????????
}

Мне необходим идентификатор примерно вот такого формата:

000000001A447390AA6611CD9BC800AA002FC45A09001207274E1F9F314E9787FCD1B7E58F07000137B94C9100001207274E1F9F314E9787FCD1B7E58F07000137E300B60000

Подскажите пожалуйста, как это сделать в ews?

Answer 1

Разобрался с проблемой.

Класс, для конекта со службой:

public static class ConnectionToEws
    {
        private static bool RedirectionUrlValidationCallback(string redirectionUrl)
        {
            bool result = false;
            var redirectionUri = new Uri(redirectionUrl);
            if (redirectionUri.Scheme == "https")
            {
                result = true;
            }
            return result;
        }
        public static ExchangeService ConnectToService()
        {
            var service = new ExchangeService(ExchangeVersion.Exchange2010_SP2)
            {
                Credentials = new WebCredentials("Login", "Password")
                ,UseDefaultCredentials = false
            };
            service.AutodiscoverUrl("EmailAddress", RedirectionUrlValidationCallback);
            return service;
        }
    }

Ну и сам пример получения идентификатора:

static void Main(string[] args)
        {
            var service = ConnectionToEws.ConnectToService();
            var results = service.FindItems(WellKnownFolderName.Inbox, new ItemView(1));
            foreach (var item in results)
            {
                var originalId = new AlternateId(IdFormat.EwsId, item.Id.ToString(), "EmailAddress", false);
                var entryId = service.ConvertId(originalId, IdFormat.HexEntryId);
                Console.WriteLine(((AlternateId)entryId).UniqueId);
            }
            Console.ReadKey();
        }

И вариант преобразованя для письма из папки:

static void Main(string[] args)
        {
            var service = ConnectionToEws.ConnectToService();
            var someFolder = GetFolder(service, "MyFolderName");
            var results = someFolder.FindItems(new ItemView(1));
            foreach (var item in results)
            {
                var alternatePublicFolderItem = new AlternatePublicFolderItemId(IdFormat.EwsId, someFolder.Id.UniqueId, item.Id.ToString());
                var convertResult = service.ConvertId(alternatePublicFolderItem, IdFormat.HexEntryId);
                Console.WriteLine(((AlternatePublicFolderItemId)convertResult).ItemId);
            }
            Console.ReadKey();
        }
        private static Folder GetFolder(ExchangeService service, string folderName)
        {
            var folderView = new FolderView(int.MaxValue);
            var findFolderResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView);
            foreach (var folder in findFolderResults)
            {
                if (folderName.Equals(folder.DisplayName, StringComparison.InvariantCultureIgnoreCase))
                {
                    return folder;
                }
            }
            return null;
        }
READ ALSO
Проблема с IEnumerator

Проблема с IEnumerator

есть своя реализация dictionary:

144
Загрузочная страница Xamarin.Forms

Загрузочная страница Xamarin.Forms

Хочу сделать загрузочную страницу приложения (на 5 секунд высвечивается страница, а потом убирается (Navigationpopasync())), однако высвечивается на 5 секунд...

149
DataGridView C# добавление изображения, имя которого берется из dataset

DataGridView C# добавление изображения, имя которого берется из dataset

Доброе утро, столкнулся с проблемой следующего характераЕсть база данных ms sql которую подключаю через источники данных в visual studio, таблица...

157