EWS не может получить всю непрочитанную почту, которая получила ошибку при чтении - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть служба Windows, которая работает каждые 10 секунд.Обычно это работает нормально, но иногда я получаю эти ошибки;

в Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at OutlookService.ItemLoad(EmailMessage message, List 1 & attachmentList) в \ OutlookService.cs: строка 69;Ошибка запроса.Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.25.09.2019 15:03:53: Microsoft.Exchange.WebServices: at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse (IEwsHttpWebResponse response)

Моя проблема заключается в том, что в письме произошла ошибка при чтенииэто не может быть прочитано снова.Он остался непрочитанным, но я не могу его получить.

Мой код;

    private static ExchangeService Service2013
    {
        get
        {
            if (_service2013 == null)
            {
                var uname = "mail";
                var pwd = "pass";

                _service2013 = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
                _service2013.Credentials = new WebCredentials(uname, pwd);
                _service2013.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
            }
            return _service2013;
        }
    }

 ExchangeService service = OutlookService.Service;

        SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
        try
        {
            FindItemsResults<Item> findResults;
            ItemView view = new ItemView(100);         
            do
            {
                findResults = service.FindItems(WellKnownFolderName.Inbox, sf, view);
                if (findResults.Items.Count > 0)
                {
                    foreach (var item in findResults.Items)
                    {
                        item.Load(); 
                        var emailMessage = item as EmailMessage;
                        if (!string.IsNullOrEmpty(emailMessage.Subject))
                        {
                            if (!emailMessage.Subject.ToLower().Contains("automatic reply") && !emailMessage.Subject.ToLower().Contains("otomatik yanıt"))
                            {
                                ReadMail(item as EmailMessage);
                                GC.SuppressFinalize(item);
                            }
                            else
                            {
                                emailMessage.IsRead = true;
                                emailMessage.Update(ConflictResolutionMode.AlwaysOverwrite);
                            }
                        }
                        else
                        {
                            ReadMail(item as EmailMessage);
                            GC.SuppressFinalize(item);
                        }
                    }
                }

                view.Offset = findResults.NextPageOffset.GetValueOrDefault(0);
                GC.SuppressFinalize(findResults);
            } while (findResults.MoreAvailable);
            GC.SuppressFinalize(view);
        }
        catch (Exception ex)
        {
            //Debug.WriteLine(string.Format("Operate Error {0}.", ex.Message));
            Logger.WriteLog(ex);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...