Partager via


Supprimer des éléments en utilisant EWS dans Exchange

Découvrez comment supprimer des rendez-vous, des courriers, des contacts, des tâches et d’autres éléments à l’aide de l'API gérée par EWS ou EWS dans Exchange.

Vous pouvez exporter des éléments en utilisant l’API gérée par EWS ou EWS de plusieurs façons. L’option que vous utilisez dépend des éléments ci-après :

  • Type d’élément exporté.

  • Degré de fidélité que vous souhaitez maintenir entre l’état de l’élément dans Exchange et l’élément exporté.

  • Format de l’élément exporté.

  • Les conditions requises de post-traitement.

  • Si vous souhaitez réimporter l’élément dans Exchange.

Cet article vous présente comment utiliser chacune des différentes options pour exporter des éléments. Vous pouvez utiliser n’importe quelle option pour exporter par lots des éléments en dehors d’Exchange.

Exporter un élément dans un format personnalisé

Vous pouvez utiliser les résultats d’un appel de méthode d’API gérée par EWS Item.Bind ou analyser les résultats d’une opération GetItem d’EWS dans un format qui fonctionne avec les conditions requises de votre application. Utilisez cette option lorsque vous exportez des éléments afin de les importer dans une base de données, un fichier .csv ou un autre format ou système. Vous pouvez également enregistrer l’élément sous forme d’élément EWS XML, ce qui peut être utile car de nombreux systèmes ont une capacité d’analyse XML. Nous vous recommandons d’utiliser la méthode Item.Bind ou l’opération GetItem (sans la propriété Item.MimeContent ), car cette option vous permet de contrôler les propriétés exportées.

Exporter des éléments en toute fidélité

Si vous souhaitez exporter des éléments en toute fidélité, vous pouvez utiliser l’opération ExportItems d’EWS. L’opération ExportItems exporte chaque élément en tant que flux de données. Ce flux de données ne convient pas pour une analyse, mais peut être utilisé comme une sauvegarde au niveau de l’élément qui peut être importée dans une boîte aux lettres Exchange. Vous pouvez inclure de nombreux éléments dans chaque demande ExportItems, bien qu’il soit recommandé de ne pas inclure plus de 100 éléments dans chaque appel. Comme l’API gérée par EWS n’implémente pas l’opération ExportItems, vous devez écrire une routine pour envoyer les demandes web si vous utilisez l’API gérée par EWS. Vous pouvez éventuellement utiliser la méthode Item.Bind pour obtenir des métadonnées sur l’élément afin d’indexer et de stocker des informations sur le flux de données.

Nous vous recommandons d’utiliser l’opération ExportItems pour exporter les éléments que vous envisagez d’importer dans une boîte aux lettres Exchange.

L’exemple suivant vous montre comment utiliser l’opération ExportItems. Dans cet exemple, l’identificateur d’élément est abrégé pour des raisons de lisibilité.

<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
      xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013"/>
  </soap:Header>
  <soap:Body>
    <m:ExportItems>
      <m:ItemIds>
        <t:ItemId Id="AAMkAGYzZjZmRiUsidkC+NAAAAY89GAAA="/>
      </m:ItemIds>
    </m:ExportItems>
  </soap:Body>
</soap:Envelope>

Le serveur répond à la demande ExportItems avec un élément ExportItemsResponse qui inclut une valeur d’élément ResponseCode de NoError, ce qui indique que l’élément a été correctement exporté. La réponse inclut également l’ID d’élément de l’élément exporté et le flux de données contenant le contenu exporté. L’exemple suivant illustre le corps SOAP contenant l’élément exporté.

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <m:ExportItemsResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
                         xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
    <m:ResponseMessages>
      <m:ExportItemsResponseMessage ResponseClass="Success">
        <m:ResponseCode>NoError</m:ResponseCode>
        <m:ItemId Id="AAMkAGYzZjZmRiUsidkC+NAAAAY89GAAA=" ChangeKey="FwAAAA=="/>
        <m:Data>
          AQAAAAgAAAAAAAAALgBlAHgAdABlAHMAdAAuAG0AaQBjAHIAbwBzAG8AZgB0AC4A
          cgAyAEAAYQB1AGoAaQBuAGcALQBkAG8AbQAuAGUAeAB0AGUAcwB0AC4AbQBpAGMAcgBvAHMA
          bwBmAHQALgBjAG8AbQAAAAMAADkAAAAAAwD+DwYAAAADAARAAwACQAMADkA=
        </m:Data>
      </m:ExportItemsResponseMessage>
     </m:ResponseMessages>
  </m:ExportItemsResponse>
</s:Body>

Utiliser le flux MIME pour l’exportation dans des formats de fichiers courants

Vous pouvez utiliser la méthode d’API gérée par EWS Item.Bind ou l’opération GetItem EWS pour obtenir la représentation MIME d’un élément. Étant donné que Exchange ne stocke pas le contenu MIME de chaque élément, il doit convertir la représentation de base de données de chaque élément dans le flux MIME. Étant donné que cette conversion est coûteuse, nous vous déconseillons de demander le flux MIME pour des éléments à grande échelle. Notez également que le flux MIME contient un ensemble limité de propriétés. Vous devrez peut-être envisager d’autres options si le jeu de propriétés ne contient pas les propriétés dont vous avez besoin.

Utiliser l’API gérée par EWS pour exporter un e-mail dans un fichier .eml et .mht en utilisant le flux MIME

Outlook et d’autres applications de messagerie courantes peuvent ouvrir le format de fichier EML (.eml). L’exemple suivant vous présente comment exporter un e-mail à l’aide du flux MIME et utiliser le flux MIME pour créer un fichier EML et MIME HTML (.mht). De nombreux navigateurs web prennent en charge le format de fichier HTML MIME. Cet exemple suppose que le service est un objetExchangeService valide et que l’utilisateur peut s’authentifier au serveur Exchange.

private static void ExportMIMEEmail(ExchangeService service)
{
    Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
    ItemView view = new ItemView(1);
    view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
    // This results in a FindItem call to EWS.
    FindItemsResults<Item> results = inbox.FindItems(view);
    foreach (var item in results)
    { 
        PropertySet props = new PropertySet(EmailMessageSchema.MimeContent);
        // This results in a GetItem call to EWS.
        var email = EmailMessage.Bind(service, item.Id, props);
                
        string emlFileName = @"C:\export\email.eml";
        string mhtFileName = @"C:\export\email.mht";
        // Save as .eml.
        using (FileStream fs = new FileStream(emlFileName, FileMode.Create, FileAccess.Write))
        {
            fs.Write(email.MimeContent.Content, 0, email.MimeContent.Content.Length);
        }
        // Save as .mht.
        using (FileStream fs = new FileStream(mhtFileName, FileMode.Create, FileAccess.Write))
        {
            fs.Write(email.MimeContent.Content, 0, email.MimeContent.Content.Length);
        }
    }
}

Utiliser l’API gérée par EWS pour exporter un rendez-vous dans un fichier iCal en utilisant le flux MIME

Outlook et les autres applications de calendrier courantes peuvent ouvrir le format de fichier iCal (.ics). L’exemple suivant vous présente comment exporter un rendez-vous à l’aide du flux MIME et utiliser le flux MIME pour créer un fichier iCal. Notez que de nombreuses propriétés ne sont pas exportées avec le flux MIME, y compris les participants et les propriétés relatives aux pièces jointes. Vous pouvez capturer d’autres propriétés à partir d’EWS en les demandant et en les enregistrant dans le fichier iCal en tant qu’extensions privées. Ces extensions privées sont précédées de « x- ».

Cet exemple suppose que le service est un objetExchangeService valide et que l’utilisateur peut s’authentifier au serveur Exchange. Cet exemple suppose également que vous avez un rendez-vous avec l’objet « Projections financières 2015 » dans le dossier du calendrier.

private static void ExportMIMEAppointment(ExchangeService service)
{
    Folder inbox = Folder.Bind(service, WellKnownFolderName.Calendar);
    ItemView view = new ItemView(1);
    view.PropertySet = new PropertySet(BasePropertySet.IdOnly); 
    // This results in a FindItem call to EWS.
    FindItemsResults<Item> results = inbox.FindItems("subject:'2015 Financial Projections'", view);
    foreach (var item in results)
    {
        PropertySet props = new PropertySet(AppointmentSchema.MimeContent);
        // This results in a GetItem call to EWS.
        var email = Appointment.Bind(service, item.Id, props);
        string iCalFileName = @"C:\export\appointment.ics";
        // Save as .ics.
        using (FileStream fs = new FileStream(iCalFileName, FileMode.Create, FileAccess.Write))
        {
            fs.Write(email.MimeContent.Content, 0, email.MimeContent.Content.Length);
        }
    }
}

Utiliser l’API gérée par EWS pour exporter un contact dans un fichier vCard en utilisant le flux MIME

Outlook et d’autres applications courantes de gestion des contacts peuvent ouvrir le format de fichier vCard (.vcf). L’exemple suivant vous présente comment exporter un contact à l’aide du flux MIME et comment utiliser le flux MIME pour créer une vCard. Vous pouvez capturer d’autres propriétés à partir d’EWS en les demandant et en les enregistrant dans la vCard en tant qu’extensions privées. Ces extensions sont précédées de « x- ».

Cet exemple suppose que le service est un objetExchangeService valide et que l’utilisateur peut s’authentifier au serveur Exchange.

private static void ExportMIMEContact(ExchangeService service)
{
    Folder inbox = Folder.Bind(service, WellKnownFolderName.Contacts);
    ItemView view = new ItemView(1);
    view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
    // This results in a FindItem call to EWS.
    FindItemsResults<Item> results = inbox.FindItems(view);
    foreach (var item in results)
    {
        PropertySet props = new PropertySet(ContactSchema.MimeContent);
        // This results in a GetItem call to EWS.
        var email = Contact.Bind(service, item.Id, props);
        string vcfFileName = @"C:\export\contact.vcf";
        // Save as .vcf.
        using (FileStream fs = new FileStream(vcfFileName, FileMode.Create, FileAccess.Write))
        {
            fs.Write(email.MimeContent.Content, 0, email.MimeContent.Content.Length);
        }
    }
}

Remarque

Vous ne pouvez pas importer de fichiers vCard à l’aide de la propriété MimeContent . Vous pouvez importer des contacts à l’aide de la méthode d’API gérée par EWS Contact.Save ou de l’opération CreateItem EWS.

Utiliser EWS pour exporter des éléments en utilisant le flux MIME

Utilisez l’opération GetItem pour obtenir le flux MIME d’un élément. La requête GetItem suivante illustre comment demander le contenu MIME d’un élément.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013" />
  </soap:Header>
  <soap:Body>
    <m:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:IncludeMimeContent>true</t:IncludeMimeContent>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="AAMkADEzYjJkLTYxMwB8GqYicWAAA=" ChangeKey="CQAAABzXv"/>
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

L’exemple suivant illustre la réponse à une demande pour obtenir le flux MIME. Le flux MIME a été abrégé pour des raisons de lisibilité.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" 
                         MinorVersion="0" 
                         MajorBuildNumber="893" 
                         MinorBuildNumber="17" 
                         Version="V2_10" 
                         xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
                       xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:Message>
              <t:MimeContent CharacterSet="UTF-8">UmVjZ6IGZyb2b2suY29y5hMzgwZTA1YtDQo=</t:MimeContent>
              <t:ItemId Id="AAMkADEzYjJkLTYxMwB8GqYicWAAA=" ChangeKey="CQAAABzXv"/>
            </t:Message>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

Après une exportation d’éléments, vous voudrez peut-être importer des éléments dans Exchange.

Voir aussi