我尝试将约会项目从pst文件复制到用户邮箱中的日历类型的子文件夹(作为存档)。我也在复制邮件和联系人,并且完美无缺。我正在做的是复制每个项目并将其移动到新位置。目标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:
如上所述,相同的代码在邮件和联系人项目以及某些日历项目上运行良好。
让我发疯!请帮忙。
由于
答案 0 :(得分:0)
Outlook在决定是否可以复制或移动特定项目时尝试运行其业务逻辑,并调用处理更新/删除通知,甚至可能运行表单脚本(如果使用自定义表单)。如果使用Redemption是一个选项,请尝试以下内容 - 赎回不会尝试使用。
RDOSession Session = new RDOSession();
Session.MAPIOBJECT = Application.Session.MAPIOBJECT;
RDOMail rItem = (RDOMail)Session.GetRDOObjectFromOutlookObject(item);
RDOFolder rDestination = (RDOFolder)Session.GetRDOObjectFromOutlookObject(destination);
rItem.CopyTo(rDestination);