2014-10-22 2 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. 정상적인 메시지를 이동하는 중입니다.

+0

"제대로 작동하지 않는다"는 것을 설명해야합니다. – Filburt

+0

나는 아무 일도 없다는 것을 의미한다/ – PiotrKowalski

+0

디버거를 사용하여 메소드를 단계별로 실행하려고 했습니까? 아무 일도 일어나지 않으면 나는 당신이 코드의 어느 시점에서 발생하는 예외를 잡아서 삼키고 있다고 확신한다. – Filburt

답변

1

이동 및 복사 작업을 통해서만 첨부 파일이 아닌 실제 사서함 항목을 복사 할 수 있기 때문에 작동하지 않습니다 (오류 및 잘못된 ID가 표시되어야 함). 이것에 대한 하나의 해결 방법은 이동 및 그 MimeCotent에서 새로운 객체를 생성하고 예 할 항목을 이동하려는 폴더에 저장하려면 이메일 첨부 파일에 대한 MimeContent를 얻는 것입니다

 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 만 복사되므로이 메소드로 메시지의 모든 Exchange 등록 정보를 완벽하게 충실히 얻지 못합니다.

건배 글렌

관련 문제