Outlook 修改和 Save() MailItems - 速度慢

发布于 2024-08-07 04:34:45 字数 1016 浏览 4 评论 0原文

我需要修改 Outlook 2007 中的许多 MailItem。

我需要在主 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 个 Save() 调用需要 1 秒,可能是由于与服务器的通信所致。在 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;
}

I need to modify many MailItems in Outlook 2007.

I need the mails to immediately refresh in the main Outlook grid - the only way to do this I found is to call 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;
    }
}

The problem is that Save() is slow on IMAP account - 1s per 1 Save() call, probably due to communication with server. On POP3 account it is ok.

The modification I need to make on every email is just changing a User property. I have a custom View defined in Outlook that shows a column with this property.

Is there a way to:

  • make the user property local to PST, so that no communication with server is done on Save() ?
  • do all the Save() calls in one batch ?

I'm setting user property on emails like this:

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文