将电子邮件附件移动到Outlook中的另一个文件夹中

问题描述:

我想将我的电子邮件附件移动/复制到Outlook中的新文件夹中/并且我的代码无法正常工作。将电子邮件附件移动到Outlook中的另一个文件夹中

foreach(Item item in findResults.Items) 
     {     
      EmailMessage email = EmailMessage.Bind(service, item.Id, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments)); 

      if(false) 
      { 
       // OTC Marker HTML Body 
      } 
      else 
      { 
       if (email.HasAttachments) 
       { 
        foreach (Attachment attachment in email.Attachments) 
        { 
         EmailMessage emailAttachment = EmailMessage.Bind(service, attachment.Id, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments)); 

         ItemAttachment itemAttachment = attachment as ItemAttachment; 
         itemAttachment.Load(); 

         EmailMessage mess = itemAttachment.Item as EmailMessage; 
         moveToTestFolder (mess, @"TestFolder"); 
        } 
       } 
       else 
       { 
        //to do 
       } 
      } 
      } 

而且我moveToTestFolder方法:

private void moveToTestFolder (EmailMessage item, string folderName) 
    { 
     Folder rootfolder = Folder.Bind(service, WellKnownFolderName.MsgFolderRoot); 
     rootfolder.Load(); 

     var folders = rootfolder.FindFolders(new FolderView(20)); 
     var folderItemToMove = folders.FirstOrDefault(f => f.DisplayName.Equals(folderName, StringComparison.OrdinalIgnoreCase)); 

     item.Move(folderItemToMove.Id); 
    } 

我'尝试移动附件(如果是电子邮件)的特殊文件夹中的前景。移动正常信息现在正在工作。

+0

您需要说明“无法正常工作”的含义。 – Filburt 2014-10-22 07:42:22

+0

我的意思是什么都没有发生;/ – PiotrKowalski 2014-10-22 07:45:41

+0

你是否尝试用调试器来调试你的方法?如果什么都没有发生,我很肯定你正在捕捉和吞咽你的代码中某处出现的异常。 – Filburt 2014-10-22 08:12:04

这不起作用,因为您只能使用移动和复制操作来复制实际的邮箱项目而非附件(您应该收到有关错误和无效标识的错误)。这其中的一个解决办法是让MimeContent你要移动,然后创建从MimeCotent一个新的对象,并将其保存到文件夹要移动的项目,例如电子邮件附件

 foreach (Attachment Attach in EWSItem.Attachments) 
     { 
      if (Attach is ItemAttachment) 
      { 
       PropertySet psProp = new PropertySet(BasePropertySet.FirstClassProperties); 
       psProp.Add(ItemSchema.MimeContent); 
       ((ItemAttachment)Attach).Load(psProp); 
       if (((ItemAttachment)Attach).Item.MimeContent != null) 
       { 
        EmailMessage NewMessage = new EmailMessage(service); 
        NewMessage.MimeContent = ((ItemAttachment)Attach).Item.MimeContent; 
        NewMessage.SetExtendedProperty(new ExtendedPropertyDefinition(3591, MapiPropertyType.Integer), "1"); 
        NewMessage.Save(folderItemToMove.Id); 
       } 
      } 
     } 

你不”因为只有MimeContent被复制,所以通常对电子邮件没有问题,但是对于其他对象类型,如联系人,任务等,将会成为问题。

干杯 Glen