EWS очень медленно отображает электронные письма - PullRequest
0 голосов
/ 24 мая 2019

Я использую службы Exchange в своем коде приложения для отображения списка электронных писем в пользовательском интерфейсе приложения. Тем не менее, он может получить список адресов электронной почты. Но для отображения всех настроек требуется очень много времени. Если я уменьшу количество отображаемых писем, это займет меньше времени.

public static List<EmailMsg> GetEmailListInFolder(string folderName)
    {
        var folderId = GetFolderId(folderName);
        var service = GetExchangeService();

        if (folderId != null)
        {
            var emails = new List<EmailMsg>();
            var count = 0;
            var findResults = service.FindItems(folderId, new ItemView(100));

            foreach (var item in findResults.Items)
            {
                var emailPropertySet = new PropertySet(
                    BasePropertySet.FirstClassProperties,
                    new PropertyDefinitionBase[]{
                            new ExtendedPropertyDefinition(4115, MapiPropertyType.Binary)
                    });

                var message = EmailMessage.Bind(service, item.Id, emailPropertySet);

                emails.Add(new EmailMsg(folderName, count++, item.Id.UniqueId, message.Subject, message.DateTimeReceived.ToString("yyyy-MMM-dd HH:mm:ss"), ""));
            }
            return emails;
        }

        return null;
    }

Когда я отлаживаю код и обнаруживаю, что на этой строке требуется несколько секунд, прежде чем перейти к следующей строке.

var message = EmailMessage.Bind(service, item.Id, emailPropertySet);

Пожалуйста, предложите мне способ уменьшить время загрузки моих электронных писем. Спасибо

1 Ответ

0 голосов
/ 24 мая 2019

Вы возвращаете все BasePropertySet.FirstClassProperties!
Возможно, вы захотите изменить это, чтобы просто вернуть нужные вам свойства.

Список FirstClassProperties от msdn :

Id
ParentFolderId
ItemClass
Subject
Sensitivity
Body
Attachments
DateTimeReceived
Size
Categories
Importance
InReplyTo
IsSubmitted
IsDraft
IsFromMe
IsResend
IsUnmodified
InternetMessageHeaders
DateTimeSent
DateTimeCreated
AllowedResponseActions
ReminderDueBy
IsReminderSet
ReminderMinutesBeforeStart
DisplayCc
DisplayTo
HasAttachments
Culture
EffectiveRights
LastModifiedName
LastModifiedTime
IsAssociated
WebClientReadFormQueryString
WebClientEditFormQueryString
ConversationId
Flag
InstanceKey
EntityExtractionResult
Sender
ToRecipients
CcRecipients
BccRecipients
IsReadReceiptRequested
IsDeliveryReceiptRequested
ConversationIndex
ConversationTopic
From
InternetMessageId
IsRead
IsResponseRequested
ReplyTo
References
ReceivedBy
ReceivedRepresenting

Вы загружаете вложения. Чтобы избежать этой большой нагрузки, вы можете:

  • Загружайте вложение только в том случае, если вы находитесь на определенной почте.

  • Загрузить только свойства с LoadPropertiesForItems и получение имени вложения, расширения и т. д. без получения реального вложения.

    Затем получить настоящее вложение можно с помощью ExchangeService.GetAttachments

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