如何将mailItem从1个商店移动到另一个商店

时间:2015-10-01 09:06:06

标签: c# .net outlook office-interop

我尝试使用Outlook 2010和C#将邮件项目从1个商店移动到另一个商店

我已经走得很远了,但不确定我是如何进行“移动”的。我假设它已经存储然后删除

我的尝试(代码大大减少)

         foreach (var mail in folder.Items)
           {
            //I am in the correct folder, and all I want to do is move all items to the 'inbox' of the store. I have already gotten the destination store and saved it as a variable called store

              Microsoft.Office.Interop.Outlook.MailItem mailItem = (Microsoft.Office.Interop.Outlook.MailItem)mail; //got the item

             mailItem.SaveAs(store.FilePath, Microsoft.Office.Interop.Outlook.OlSaveAsType.olMSG); // throws exception
             mailItem.Delete();
           }

我不确定这是否是最好的方法,但是行mailItem.SaveAs(store.FilePath, Microsoft.Office.Interop.Outlook.OlSaveAsType.olMSG);会引发异常:

  

操作失败

我没有看到除此之外的更多细节

1 个答案:

答案 0 :(得分:1)

SaveAs方法将Microsoft Outlook项目保存到指定的路径,并采用指定文件类型的格式。如果未指定文件类型,则使用MSG格式(.msg)。因此,该方法用于保存磁盘上的项目,而不是Outlook中的其他商店。

您可以使用MailItem类的Move方法将Microsoft Outlook项目移动到新文件夹。例如:

Sub MoveItems() 
 Dim myNameSpace As Outlook.NameSpace 
 Dim myInbox As Outlook.Folder 
 Dim myDestFolder As Outlook.Folder 
 Dim myItems As Outlook.Items 
 Dim myItem As Object 

 Set myNameSpace = Application.GetNamespace("MAPI") 
 Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 
 Set myItems = myInbox.Items 
 Set myDestFolder = myInbox.Folders("Personal Mail") 
 Set myItem = myItems.Find("[SenderName] = 'Eugene'") 
 While TypeName(myItem) <> "Nothing" 
  myItem.Move myDestFolder 
  Set myItem = myItems.FindNext 
 Wend 
End Sub
相关问题