Supprimer des pièces jointes à l'aide de EWS dans ExchangeDelete attachments by using EWS in Exchange

Découvrez comment supprimer des pièces jointes d’éléments à l’aide de l’API managée EWS ou d’EWS dans Exchange.Learn how to delete attachments from items by using the EWS Managed API or EWS in Exchange.

Vous disposez d’un certain nombre d’options lorsqu’il s’agit de supprimer des pièces jointes de fichiers et d’éléments à l’aide de l’API managée EWS.You have a number of options when it comes to deleting file and item attachments from items by using the EWS Managed API. Vous pouvez supprimer toutes les pièces jointes du message, supprimer par un nom de fichier ou supprimer par position dans la collection.You can delete all the attachments from the message, delete by a file name, or delete by position in the collection. Pour chacune de ces options, il existe une méthode AttachmentCollection .For each of these options, there is an AttachmentCollection method.

À l’inverse, avec EWS, peu importe que vous supprimiez toutes les pièces jointes d’un élément ou d’un seul, la séquence d’opérations est la même.Conversely, with EWS, no matter whether you're deleting all attachments from an item or just one, the sequence of operations is same. Contrairement à l’API managée EWS, EWS n’inclut pas d’opérations séparées à supprimer en fonction du nom ou de la position dans le tableau de pièces jointes.Unlike the EWS Managed API, EWS does not include separate operations to delete based on name or position in the attachments array.

Tableau 1. Méthodes de l’API managée EWS et opérations EWS pour la suppression des pièces jointesTable 1. EWS Managed API methods and EWS operations for deleting attachments

TâcheTask Méthode d'API managée EWSEWS Managed API method Opération EWSEWS operation
Supprimer toutes les pièces jointes d’un élément.Delete all attachments from an item.
Item. bind, suivi de AttachmentCollection. Clear, suivi de EmailMessage. UpdateItem.Bind, followed by AttachmentCollection.Clear, followed by EmailMessage.Update
GetItem suivi de DeleteAttachmentGetItem followed by DeleteAttachment
Supprimer une pièce jointe d’un élément par son nom.Delete an attachment from an item by name.
Item. bind, suivi par AttachmentCollection. Remove, suivi de EmailMessage. UpdateItem.Bind, followed by AttachmentCollection.Remove, followed by EmailMessage.Update
GetItem suivi de DeleteAttachmentGetItem followed by DeleteAttachment
Supprimer une pièce jointe à partir d’un élément en fonction de sa position dans la collection.Delete an attachment from an item by position in the collection.
Item. bind, suivi de AttachmentCollection. RemoveAt, suivi de EmailMessage. UpdateItem.Bind, followed by AttachmentCollection.RemoveAt, followed by EmailMessage.Update
GetItem suivi de DeleteAttachmentGetItem followed by DeleteAttachment

Supprimer toutes les pièces jointes d’un message électronique à l’aide de l’API managée EWSDelete all attachments from an email by using the EWS Managed API

L’exemple de code suivant montre comment supprimer toutes les pièces jointes d’un message électronique en :The following code example shows how to delete all attachments from an email by:

  1. Utilisation de la méthode EmailMessage. bind pour établir une liaison avec un message électronique existant et récupérer la collection de pièces jointes.Using the EmailMessage.Bind method to bind to an existing email message and retrieve the collection of Attachments.

  2. Utilisation de la méthode AttachmentCollection. Clear pour supprimer toutes les pièces jointes du courrier électronique.Using the AttachmentCollection.Clear method to delete all the attachments from the email.

  3. Utilisation de la méthode EmailMessage. Update pour enregistrer les modifications.Using the EmailMessage.Update method to save the changes.

Cet exemple suppose que le service est un objet ExchangeService valide, ItemId est l' ItemId du message à partir duquel les pièces jointes seront supprimées, et que l’utilisateur a été authentifié auprès d’un serveur Exchange.This example assumes that service is a valid ExchangeService object, itemId is the ItemId of the message from which attachments will be deleted, and that the user has been authenticated to an Exchange server.

public static void DeleteAllAttachments(ExchangeService service, ItemId itemId)
{
    // Bind to an existing message by using its item ID and requesting its attachments collection.
    // This method results in a GetItem call to EWS.
    EmailMessage message = EmailMessage.Bind(service, itemId, new PropertySet(ItemSchema.Attachments));
    // Delete all attachments from the message.
    message.Attachments.Clear();
    // Save the updated message.
    // This method results in an DeleteAttachment call to EWS.
    message.Update(ConflictResolutionMode.AlwaysOverwrite);
}

Supprimer une pièce jointe d’un message électronique à l’aide de l’API managée EWSDelete an attachment by name from an email by using the EWS Managed API

L’exemple de code suivant montre comment supprimer une pièce jointe par un nom de la manière suivante :The following code example shows how delete an attachment by name by:

  1. Utilisation de la méthode EmailMessage. bind pour établir une liaison avec un message électronique existant et récupérer la collection de pièces jointes.Using the EmailMessage.Bind method to bind to an existing email message and retrieve the collection of Attachments.

  2. Utilisation de la méthode AttachmentCollection. Remove pour supprimer une pièce jointe nommée FileAttachment. txt.Using the AttachmentCollection.Remove method to delete an attachment named FileAttachment.txt.

  3. Utilisation de la méthode EmailMessage. Update pour enregistrer les modifications.Using the EmailMessage.Update method to save the changes.

Cet exemple suppose que le service est un objet ExchangeService valide, ItemId est l' ItemId du message à partir duquel la pièce jointe sera supprimée et que l’utilisateur a été authentifié auprès d’un serveur Exchange.This example assumes that service is a valid ExchangeService object, itemId is the ItemId of the message from which the attachment will be deleted, and that the user has been authenticated to an Exchange server.

public static void DeleteNamedAttachments(ExchangeService service, ItemId itemId)
{
    // Bind to an existing message by using its item ID and requesting its attachments collection.
    // This method results in a GetItem call to EWS.
    EmailMessage message = EmailMessage.Bind(service, itemId, new PropertySet(ItemSchema.Attachments));
    // Iterate through the attachments collection and delete the attachment named "FileAttachment.txt," if it exists.
    foreach (Attachment attachment in message.Attachments)
    {
        if (attachment.Name == "FileAttachment.txt")
        {
            message.Attachments.Remove(attachment);
            break;
        }
    }
    // Save the updated message.
    // This method results in an DeleteAttachment call to EWS.
    message.Update(ConflictResolutionMode.AlwaysOverwrite);
}

Supprimer des pièces jointes par position à l’aide de l’API managée EWSDelete attachments by position by using the EWS Managed API

L’exemple de code suivant montre comment supprimer une pièce jointe par position en procédant comme suit :The following code example shows how to delete an attachment by position by:

  1. Utilisation de la méthode EmailMessage. bind pour établir une liaison avec un message électronique existant et récupérer la collection de pièces jointes et la propriété EmailMessage. HasAttachments .Using the EmailMessage.Bind method to bind to an existing email message and retrieve the collection of Attachments and the EmailMessage.HasAttachments property.

  2. Utilisation de la méthode AttachmentCollection. Remove pour supprimer la première pièce jointe de la collection.Using the AttachmentCollection.Remove method to delete the first attachment in the collection.

  3. Utilisation de la méthode EmailMessage. Update pour enregistrer les modifications.Using the EmailMessage.Update method to save the changes.

Cet exemple suppose que le service est un objet ExchangeService valide, ItemId est l' ItemId du message à partir duquel la pièce jointe sera supprimée et que l’utilisateur a été authentifié auprès d’un serveur Exchange.This example assumes that service is a valid ExchangeService object, itemId is the ItemId of the message from which the attachment will be deleted, and that the user has been authenticated to an Exchange server.

public static void DeleteAttachmentByPosition(ExchangeService service, ItemId itemId)
{
    // Bind to an existing message by using its item ID and requesting the HasAttachments property and the attachments collection.
    // This method results in a GetItem call to EWS.
    EmailMessage message = EmailMessage.Bind(service, itemId, new PropertySet(EmailMessageSchema.HasAttachments, ItemSchema.Attachments));
    // Remove attachments using the zero-based index position of the attachment in the attachments collection.
    if (message.HasAttachments)
    {
        message.Attachments.RemoveAt(0);
    }
    // Save the updated message.
    // This method results in an DeleteAttachment call to EWS.
    message.Update(ConflictResolutionMode.AlwaysOverwrite);
}

Supprimer des pièces jointes d’un élément à l’aide d’EWSDelete attachments from an item by using EWS

Pour supprimer des pièces jointes à l’aide d’EWS, vous devez d’abord récupérer le message et la collection de pièces jointes pour déterminer le attachmentid (GetAttachment et DeleteAttachment) de la pièce jointe à supprimer.To delete attachments by using EWS, you first need to retrieve the message and the attachment collection to determine the AttachmentId (GetAttachment and DeleteAttachment) of the attachment to delete. Une fois que vous avez une ou plusieurs valeurs attachmentid à supprimer, appelez l’opération DeleteAttachment pour supprimer les pièces jointes spécifiées du message.After you have one or more AttachmentId values to delete, call the DeleteAttachment operation to remove the specified attachments from the message.

L'exemple de code suivant montre comment utiliser l'opération GetItem pour récupérer un message électronique et la collection de pièces jointes associée au message.The following code example shows how to use the GetItem operation to get an email message and the collection of attachments on the message. Il s’agit également de la première demande XML que l’API managée EWS envoie lorsque vous utilisez l’API managée EWS pour supprimer toutes les pièces jointes d’un message électronique.This is also the first XML request that the EWS Managed API sends when you use the EWS Managed API to delete all attachments from an email. Les valeurs de certains attributs ont été raccourcies pour améliorer la lisibilité.The values of some attributes are shortened for readability.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Central Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Attachments" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="uqE1AAA=" />
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

Le serveur répond à la demande GetItem par un message GetItemResponseResponseCode renvoie la valeur NoError, ce qui indique que le message a bien été récupéré, et où apparaissent les valeurs AttachmentId des pièces jointes existantes.The server responds to the GetItem request with a GetItemResponse message that includes a ResponseCode value of NoError, which indicates that the email was retrieved successfully, and the AttachmentId values of the existing attachments.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="939"
                         MinorBuildNumber="12"
                         Version="V2_11"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://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="https://schemas.microsoft.com/exchange/services/2006/messages"
                       xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:Message>
              <t:ItemId Id="uqE1AAA="
                        ChangeKey="CQAAABYAAAAFI5DJmZv+TLtyLOLIF1S5AAAXulcd" />
              <t:Attachments>
                <t:FileAttachment>
                  <t:AttachmentId Id="IpHLObE=" />
                  <t:Name>FileAttachment.txt</t:Name>
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="QuHSSmY=" />
                  <t:Name>SecondAttachment.txt</t:Name>
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="qf2KoPo=" />
                  <t:Name>ThirdAttachment.jpg</t:Name>
                </t:FileAttachment>
                <t:FileAttachment>
                  <t:AttachmentId Id="NFQMnMc=" />
                  <t:Name>FourthAttachment.txt</t:Name>
                </t:FileAttachment>
                <t:ItemAttachment>
                  <t:AttachmentId Id="jJvbLXQ=" />
                  <t:Name>Attached Message Item</t:Name>
                </t:ItemAttachment>
              </t:Attachments>
            </t:Message>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

Une fois que vous avez déterminé la pièce jointe à supprimer, appelez l’opération DeleteAttachment et incluez les valeurs attachmentid des pièces jointes à supprimer.After you determine which attachment to delete, call the DeleteAttachment operation and include the AttachmentId values of the attachments to delete.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
    <t:TimeZoneContext>
      <t:TimeZoneDefinition Id="Central Standard Time" />
    </t:TimeZoneContext>
  </soap:Header>
  <soap:Body>
    <m:DeleteAttachment>
      <m:AttachmentIds>
        <t:AttachmentId Id="IpHLObE=" />
        <t:AttachmentId Id="QuHSSmY=" />
        <t:AttachmentId Id="qf2KoPo=" />
        <t:AttachmentId Id="NFQMnMc=" />
        <t:AttachmentId Id="jJvbLXQ=" />
      </m:AttachmentIds>
    </m:DeleteAttachment>
  </soap:Body>
</soap:Envelope>

Le serveur répond à la demande DeleteAttachment avec un message DeleteAttachmentResponse qui inclut une valeur ResponseCode de la propriété NOERROR pour chaque DeleteAttachmentResponseMessage, ce qui indique que chaque pièce jointe a été supprimée avec succès. Les valeurs de certains attributs ont été raccourcies pour améliorer la lisibilité.The values of some attributes are shortened for readability.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="939"
                         MinorBuildNumber="12"
                         Version="V2_11"
                         xmlns:h="https://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="https://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:DeleteAttachmentResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
                                xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:DeleteAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootItemId RootItemId="uqE1AAA=" RootItemChangeKey="AAAXulck" />
        </m:DeleteAttachmentResponseMessage>
        <m:DeleteAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootItemId RootItemId="uqE1AAA=" RootItemChangeKey="AAAXulck" />
        </m:DeleteAttachmentResponseMessage>
        <m:DeleteAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootItemId RootItemId="uqE1AAA=" RootItemChangeKey="AAAXulck" />
        </m:DeleteAttachmentResponseMessage>
        <m:DeleteAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootItemId RootItemId="uqE1AAA=" RootItemChangeKey="AAAXulck" />
        </m:DeleteAttachmentResponseMessage>
        <m:DeleteAttachmentResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:RootItemId RootItemId="uqE1AAA=" RootItemChangeKey="AAAXulck" />
        </m:DeleteAttachmentResponseMessage>
      </m:ResponseMessages>
    </m:DeleteAttachmentResponse>
  </s:Body>
</s:Envelope>

Voir aussiSee also