Обновление электронной почты веб-служб Exchange при чтении не работает C# - PullRequest
0 голосов
/ 20 февраля 2020

Я использую веб-службы Exchange для чтения электронной почты с сервера Exchange и ее обновления. У меня есть учетная запись с родительским письмом с вложенными папками в папке «Входящие», я могу прочитать желаемое письмо успешно, но когда я пытаюсь пометить его как прочитанное, оно не работает, письмо остается непрочитанным.

код:

  static void Main(string[] args)
    {
        var exchange = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        exchange.Credentials = new WebCredentials("User", "Pass", "Domain");
        exchange.AutodiscoverUrl("Email", RedirectionCallback);
        FolderId folderToAccess = new FolderId(WellKnownFolderName.Inbox, "ParentEmail");
        FolderView view2 = new FolderView(100);
        view2.PropertySet = new PropertySet(BasePropertySet.IdOnly);
        view2.PropertySet.Add(FolderSchema.DisplayName);
        view2.Traversal = FolderTraversal.Deep;
        FindFoldersResults findFolderResults = exchange.FindFolders(folderToAccess, view2).Result;

        foreach (Folder f in findFolderResults)
        {
            if (f.DisplayName == "NameOfTheFolderUnderInbox")
            {
                var SearchFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
                ItemView view = new ItemView(100);
                FindItemsResults<Item> findResults = exchange.FindItems(f.Id, SearchFilter, view).Result;

                foreach (Item item in findResults)
                {
                    PropertySet props = new PropertySet(EmailMessageSchema.MimeContent, ItemSchema.Subject);
                    EmailMessage message = EmailMessage.Bind(exchange, item.Id, props).Result;
                    if (message.Subject.Contains("Text"))
                    {
                        string emlFileName = @"C:\export\email.eml";
                        using (FileStream fs = new FileStream(emlFileName, FileMode.Create, FileAccess.Write))
                        {
                            fs.Write(message.MimeContent.Content, 0, message.MimeContent.Content.Length);
                        }
                    }
                    message.IsRead = true;
                    message.Update(ConflictResolutionMode.AlwaysOverwrite, true);
                }
            }
        }
    }
    static bool RedirectionCallback(string url)
    {
        // Return true if the URL is an HTTPS URL.
        return url.ToLower().StartsWith("https://");
    }

1 Ответ

0 голосов
/ 25 февраля 2020

Хорошо, я решил проблему и, возможно, мог бы быть полезен для кого-то еще.

После обновления, проведя новое исследование, электронное письмо стало читаться также в outlook.

FindItemsResults<Item> UpdateResults = exchange.FindItems(f.Id, SearchFilter, view).Result

Это после обновления заставить работать!

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