2014-10-22 10 views
0

Я хочу переместить/скопировать мои вложения электронной почты в новую папку в 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); 
    } 

I'am пытается переместить вложение (если это электронная почта) в специальную папку в Outlook. Теперь работает нормальное сообщение.

+0

Вы должны будете объяснить, что означает «не работает должным образом». – Filburt

+0

Я имею в виду, что ничего не случилось;/ – PiotrKowalski

+0

Вы пытались выполнить свои методы с помощью отладчика? Если ничего не происходит, я уверен, что вы ловите и проглатываете исключение, которое возникает в какой-то момент вашего кода. – Filburt

ответ

1

Это не сработает, потому что вы можете использовать операции перемещения и копирования только для копирования фактического элемента почтового ящика, а не вложений (вы должны получить сообщение об ошибке и недопустимый идентификатор). Один из способов для этого, чтобы получить 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); 
       } 
      } 
     } 

Вы надеваете» t получить полную Верность всех свойств Exchange в сообщении с помощью этого метода, поскольку копируется только MimeContent, что, как правило, не является проблемой с Email, но будет проблемой для других типов объектов, таких как Контакты, Задачи и т. д.

Cheers Glen

Смежные вопросы