C# Outlook互操作将约会项目从PST文件复制到其他日历

C# Outlook互操作将约会项目从PST文件复制到其他日历,c#,calendar,outlook,office-interop,C#,Calendar,Outlook,Office Interop,我正在尝试将约会项目从pst文件复制到用户邮箱中Calendar类型的子文件夹(作为存档)。我也在复制邮件和联系人,这非常有效。我所做的是复制每个项目并将其移动到新位置。目标MAPIFolder是用户邮箱的子文件夹,其子文件夹类型为olFolderInbox、olFolderCalendar和olFolderContacts Microsoft.Office.Interop.Outlook.AppointmentItem clone = app.CreateItem((OlItemType.o

我正在尝试将约会项目从pst文件复制到用户邮箱中Calendar类型的子文件夹(作为存档)。我也在复制邮件和联系人,这非常有效。我所做的是复制每个项目并将其移动到新位置。目标MAPIFolder是用户邮箱的子文件夹,其子文件夹类型为olFolderInbox、olFolderCalendar和olFolderContacts

 Microsoft.Office.Interop.Outlook.AppointmentItem clone = app.CreateItem((OlItemType.olAppointmentItem));
                    AppointmentItem source = item as  AppointmentItem;
                    clone = source.Copy();
                    clone.Move(destination);
有些项目正在被复制(例如,一整天重复发生的事件),但大多数项目没有被复制。相反,代码在pst文件的源日历中创建多个副本

调用source.Copy()时引发异常我得到的异常:

System.ArgumentException was caught _HResult=-2147024809
_message=Could not complete the operation. One or more parameter values are not valid.
HResult=-2147024809 IsTransient=false  Message=Could not complete the operation.
One or more parameter values are not valid. Source=Microsoft Outlook StackTrace: at Microsoft.Office.Interop.Outlook._AppointmentItem.Copy()
   at Program.cs:line 679  InnerException:
如前所述,相同的代码在邮件、联系人项目和某些日历项目上运行良好

快把我逼疯了!!请帮忙


谢谢

Outlook在决定是否可以复制或移动特定项目时,会尝试运行其业务逻辑,并调用处理更新/删除通知,甚至可能运行表单脚本(如果使用自定义表单)。如果使用是一种选择,那么试试下面的方法——赎回并不意味着花哨

  RDOSession Session = new RDOSession();
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT;
  RDOMail rItem = (RDOMail)Session.GetRDOObjectFromOutlookObject(item);
  RDOFolder rDestination = (RDOFolder)Session.GetRDOObjectFromOutlookObject(destination);
  rItem.CopyTo(rDestination);

谢谢。我通过创建一个新的约会并从源代码中复制属性,成功地解决了这个问题。无论如何,下次在互操作模型中遇到下一个奇怪的东西时,我会看一下Redemption;-)