0

J'utilise ASP.Net MVC.Comment télécharger une pièce jointe à l'aide d'EWS dans Exchange

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; 
} 

Ce mon code Je veux fichier joint de téléchargement et si le fichier d'attache est l'image de sorte que son affichage dans le navigateur. Je suis en train d'utiliser Microsoft ActiveSync Exchange Server.

Si vous savez comment faire, s'il vous plaît aidez-moi.

Répondre

0
+0

Je ne souhaite pas télécharger de fichiers joints sur mon serveur. Je veux juste donner un lien de téléchargement de publipostage. c'est possible? –

+0

Non pas directement, mais simplement créer un point de terminaison, vous pouvez envoyer le AttachmentId à, puis traiter le AttachmentId sur le serveur en utilisant EWS et renvoyer le contenu au navigateur. À la fin de la journée, votre code devra être authentifié pour accéder à n'importe quelle pièce jointe. L'appel de l'API pour accéder à toute pièce jointe à l'aide de EWS est l'opération GetAttachment pour laquelle vous avez besoin de AttachmentId. –

+0

avez-vous un exemple? –