Мне нужно изменить многие 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;
}