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

エンドポイントを直接作成するのではなく、EWSを使用してAttachmentIdを送信してサーバー上のAttachmentIdを処理し、そのコンテンツをブラウザに返送することができます。一日の終わりに、添付ファイルにアクセスするためにコードを認証する必要があります。 EWSを使用してAttachmentにアクセスするAPI呼び出しは、AttachmentIdが必要なGetAttachment操作です。 –

+0

例がありますか? –

関連する問題