Outlook изменить и сохранить () MailItems - медленно - PullRequest
3 голосов
/ 07 октября 2009

Мне нужно изменить многие MailItems в Outlook 2007.

Мне нужно, чтобы письма немедленно обновлялись в основной сетке Outlook - единственный найденный способ сделать это - вызвать MailItem.Save ().

foreach (var item in folder.Items)
{
    var mail = item as MailItem;
    if (mail != null)     // process only MailItems
    {
        setUserProperty(mail, userPropKey, "speed test");  
        mail.Save();      // Save() to make the grid row redraw
        if (++cnt == 10)  // stop after 10 mails
            break;
    }
}

Проблема в том, что Save () работает медленно для учетной записи IMAP - 1 с на 1 вызов Save (), возможно, из-за связи с сервером. На POP3 аккаунте все в порядке.

Модификация, которую я должен сделать в каждом письме, это просто изменение свойства пользователя. У меня есть пользовательский вид, определенный в Outlook, который показывает столбец с этим свойством.

Есть ли способ:

  • сделать свойство пользователя локальным для PST, чтобы при Save () не осуществлялось взаимодействие с сервером?
  • делать все вызовы Save () в одном пакете?

Я настраиваю свойство пользователя на электронные письма, как это:

void setUserProperty(Outlook.MailItem item, string key, string value)
{
     item.UserProperties.Add(key, Outlook.OlUserPropertyType.olText, true, Outlook.OlFormatText.olFormatTextText);
     item.UserProperties[key].Value = value;
}
...