【问题标题】:Outlook add-in error: The operation cannot be performed because the message has been changedOutlook 加载项错误:由于邮件已更改,无法执行操作
【发布时间】:2020-04-07 14:58:34
【问题描述】:

我正在尝试为 Outlook 创建自己的加载项。我的意思是从邮件中提取一些数据,然后将这些邮件移动到存档文件夹。当我打开未读邮件时,它按预期工作,但是当我尝试将邮件移动到存档文件夹时打开未读邮件时出现错误。我从检查员那里收到了一封邮件。这是一些代码。

 Outlook.MailItem mail = inspector.CurrentItem as Outlook.MailItem;

 var email = mail.UserProperties.Session.CurrentUser.Address;
 Outlook.NameSpace ouNs = Globals.ThisAddIn.Application.GetNamespace("MAPI");
 Outlook.MAPIFolder baseFolder = ouNs.Folders[email];
 var archiveFolder = findFolderRecursive(baseFolder, archiveFolderName);

 mail.Move(archiveFolder);

【问题讨论】:

  • 你究竟是什么时候收到错误的?关闭检查器时移动消息。
  • 您好,谢谢您的回答。我在这里收到错误:mail.Move(archiveFolder)。还尝试关闭检查器并首先释放它:inspector.Close(Outlook.OlInspectorClose.olSave); Marshal.ReleaseComObject(检查员);但它没有帮助,同样的邮件问题,在我打开之前未读。

标签: c# outlook vsto add-in


【解决方案1】:

检查器返回的消息不允许某些方法。尝试跟踪 Inspector.Close 事件,将消息条目 id 存储在变量中,并启用计时器(使用 Forms 命名空间中的 Timer 类 - 它在同一线程上运行)。当计时器触发时,禁用它,使用 Namespace.GetItemFromID 通过其条目 id 打开项目,然后移动它。

【讨论】:

    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多