0

ASP.Net MVC를 사용하고 있습니다.Exchange에서 EWS를 사용하여 메일 첨부 파일을 다운로드하는 방법

using (ExchangeServiceBinding exchangeServer = new ExchangeServiceBinding()) 
{ 
    ICredentials creds = new NetworkCredential("username", "password"); 
    exchangeServer.Credentials = creds; 
    exchangeServer.Url = "https://myexchangeserver.com/EWS/Exchange.asmx"; 

    FindItemType findItemRequest = new FindItemType(); 
    findItemRequest.Traversal = ItemQueryTraversalType.Shallow; 

    // define which item properties are returned in the response 
    ItemResponseShapeType itemProperties = new ItemResponseShapeType(); 
    itemProperties.BaseShape = DefaultShapeNamesType.AllProperties; 
    findItemRequest.ItemShape = itemProperties; 

    // identify which folder to search 
    DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1]; 
    folderIDArray[0] = new DistinguishedFolderIdType(); 
    folderIDArray[0].Id = DistinguishedFolderIdNameType.inbox; 

    // add folders to request 
    findItemRequest.ParentFolderIds = folderIDArray; 

    // find the messages 
    FindItemResponseType findItemResponse = exchangeServer.FindItem(findItemRequest); 

    // read returned 
    FindItemResponseMessageType folder = (FindItemResponseMessageType)findItemResponse.ResponseMessages.Items[0]; 
    ArrayOfRealItemsType folderContents = new ArrayOfRealItemsType(); 
    folderContents = (ArrayOfRealItemsType)folder.RootFolder.Item; 
    ItemType[] items = folderContents.Items; 

    // if no messages were found, then return null -- we're done 
    if (items == null || items.Count() <= 0) 
    { return null; } 


    // FindItem never gets "all" the properties, so now that we've found them all, we need to get them all. 
    BaseItemIdType[] itemIds = new BaseItemIdType[items.Count()]; 
    for (int i = 0; i < items.Count(); i++) 
    { 
     itemIds[i] = items[i].ItemId; 
    } 


    GetItemType getItemType = new GetItemType(); 
    getItemType.ItemIds = itemIds; 
    getItemType.ItemShape = new ItemResponseShapeType(); 
    getItemType.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties; 
    getItemType.ItemShape.BodyType = BodyTypeResponseType.HTML; 
    getItemType.ItemShape.BodyTypeSpecified = true; 

    GetItemResponseType getItemResponse = exchangeServer.GetItem(getItemType); 
    ItemType[] messages = new ItemType[getItemResponse.ResponseMessages.Items.Count()]; 
    List<MailRecipientModel> model = new List<MailRecipientModel>(); 
    for (int j = 0; j < messages.Count(); j++) 
    { 
     messages[j] = ((ItemInfoResponseMessageType)getItemResponse.ResponseMessages.Items[j]).Items.Items[0]; 
     MailRecipientModel model1 = new MailRecipientModel(); 

     model1.Subject = messages[j].Subject; 
     model1.FromAddress = messages[j].Sender.Item.EmailAddress; 
     model1.DisplayName = messages[j].Sender.Item.Name; 
     model1.Date = messages[j].DateTimeReceived.Date.ToString(); 
     model1.MailBody = messages[j].Body.Value; 
     model1.MsgId = messages[j].ItemId.Id; 
     if (messages[j].Attachments != null) { 
      // 
     } 
     model.Add(model1); 
    }    

    return model; 
} 

이 코드는 첨부 파일을 다운로드하고 첨부 파일은 이미지이므로 브라우저에 표시하고 싶습니다.

Microsoft ActiveSync Exchange Server를 사용하고 있습니다.

그렇게하는 방법을 알고 있다면 도와주세요.

답변

0
+0

내 서버에 첨부 파일을 다운로드하고 싶지 않습니다. 난 그냥 다이렉트 메일을 다운로드 링크를주고 싶다. 그것은 가능한가? –

+0

엔드 포인트를 직접 작성하지 않고 AttachmentId를 전송 한 다음 EWS를 사용하여 서버에서 AttachmentId를 처리하고 컨텐츠를 브라우저로 다시 보낼 수 있습니다. 하루가 끝날 때마다 첨부 파일에 액세스하려면 코드가 인증되어야합니다. EWS를 사용하여 첨부 파일에 액세스하는 API 호출은 AttachmentId가 필요한 GetAttachment Operation입니다. –

+0

예가 있습니까? –