Déplacer et copier des messages électroniques à l’aide d’EWS dans ExchangeMove and copy email messages by using EWS in Exchange

Découvrez comment déplacer et copier des messages électroniques à l’aide de l’API managée EWS ou d’EWS dans Exchange.Learn how to move and copy email messages by using the EWS Managed API or EWS in Exchange.

Vous pouvez utiliser l’API managée EWS ou EWS pour déplacer et copier des messages électroniques dans une boîte aux lettres.You can use the EWS Managed API or EWS to move and copy email messages in a mailbox.

Tableau 1. Méthodes d’API managée EWS et opérations EWS pour le transfert et la copie de messages électroniquesTable 1. EWS Managed API methods and EWS operations for moving and copying email messages

TâcheTask Méthode d'API managée EWSEWS Managed API method Opération EWSEWS operation
Déplacer un message électroniqueMove an email message
EmailMessage. MoveEmailMessage.Move
MoveItemMoveItem
Copier un message électroniqueCopy an email message
EmailMessage. CopyEmailMessage.Copy
CopyItemCopyItem

Il est important de noter que lorsque vous déplacez ou copiez un message électronique dans un autre dossier, un nouvel élément est créé dans le nouveau dossier avec un ID d’élément unique et le message d’origine est supprimé.It's important to note that when you move or copy an email message into a different folder, a new item is created in the new folder with a unique item ID, and the original message is deleted. Si vous déplacez ou copiez un message électronique entre deux dossiers dans la même boîte aux lettres, le nouvel élément est renvoyé dans la réponse, qui vous donne accès au nouvel ID d’élément.If you're moving or copying an email message between two folders in the same mailbox, the new item is returned in the response, which gives you access to the new item ID. Toutefois, si vous déplacez ou copiez un message électronique entre deux boîtes aux lettres ou entre une boîte aux lettres et un dossier public, le nouvel élément n’est pas renvoyé dans la réponse.However, if you're moving or copying an email message between two mailboxes or between a mailbox and a public folder, the new item is not returned in the response. Pour accéder au message déplacé dans ce scénario, utilisez la méthode FindItems de l’API managée EWS ou l’opération EWS FindItem , créez une définition de propriété étendue pour la propriété PidTagSearchKey (0x300B0102) ou créez et définissez une propriété étendue personnalisée, puis recherchez la propriété étendue personnalisée dans le nouveau dossier.To access the moved message in that scenario, use the EWS Managed API FindItems method or EWS FindItem operation, create an extended property definition for the PidTagSearchKey (0x300B0102) property, or create and set a custom extended property and then search for the custom extended property in the new folder.

La suppression d’un message électronique est différente de celle du transfert d’un élément dans le dossier éléments supprimés.Deleting an email message is different than moving an item to the Deleted Items folder. Si vous utilisez l’élément de l’API managée EWS . Delete ou l’opération EWS EWS, l’élément spécifié dans la demande est supprimé du dossier d’origine, et une copie est placée dans le dossier éléments supprimés avec un nouvel ID d’élément.If you use the EWS Managed API Item.Delete method or the EWS DeleteItem operation, the item specified in the request is removed from the original folder, and a copy is placed in the Deleted Items folder with a new item ID. Contrairement à ce qui se passe lorsque vous déplacez ou copiez un élément, le nouvel élément n’est pas renvoyé dans la méthode Delete ou la réponse de l’opération DeleteItem .Unlike when you move or copy any item, the new item is not returned in the Delete method or the DeleteItem operation response. La procédure de Suppression d’un courrier électronique à l’aide de l’API managée EWS ou EWS est identique à celle de la suppression d’un élément générique de la Banque d’informations Exchange.The steps involved in deleting an email by using the EWS Managed API or EWS are the same as those for deleting any generic item from the Exchange store.

Déplacer un message électronique à l’aide de l’API managée EWSMove an email message by using the EWS Managed API

L’exemple de code suivant montre comment utiliser la méthode EmailMessage. Move pour déplacer un message électronique existant d’un dossier à un autre.The following code example shows how to use the EmailMessage.Move method to move an existing email message from one folder to another.

Cet exemple part du principe que le service est un objet ExchangeService valide et que l’ID ItemId est l' ID du message électronique à déplacer ou à copier.This example assumes that service is a valid ExchangeService object, and that ItemId is the Id of the email message to move or copy.

// As a best practice, limit the properties returned by the Bind method to only those that are required.
PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Subject, EmailMessageSchema.ParentFolderId);
// Bind to the existing item by using the ItemId.
// This method call results in a GetItem call to EWS.
EmailMessage beforeMessage = EmailMessage.Bind(service, ItemId, propSet);
// Move the specified mail to the JunkEmail folder and store the returned item.
Item item = beforeMessage.Move(WellKnownFolderName.JunkEmail);
// Check that the item was moved by binding to the moved email message 
// and retrieving the new ParentFolderId.
// This method call results in a GetItem call to EWS.
EmailMessage movedMessage = EmailMessage.Bind(service, item.Id, propSet);
Console.WriteLine("An email message with the subject '" + beforeMessage.Subject + "' has been moved from the '" + beforeMessage.ParentFolderId + "' folder to the '" + movedMessage.ParentFolderId + "' folder.");

Déplacer un message électronique à l’aide d’EWSMove an email message by using EWS

L’exemple de code suivant montre comment utiliser l’opération MoveItem pour déplacer un message électronique dans le dossier courrier indésirable.The following code example shows how to use the MoveItem operation to move an email message to the Junk Email folder.

Il s’agit également de la requête XML envoyée par l’API managée EWS lors de l’appel de la méthode Move .This is also the XML request that is sent by the EWS Managed API when calling the Move method. Les valeurs de certains attributs et éléments ont été raccourcies pour des raisons de lisibilité.The values of some attributes and elements have been 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="Exchange2013" />
  </soap:Header>
  <soap:Body>
    <m:MoveItem>
      <m:ToFolderId>
        <t:DistinguishedFolderId Id="junkemail" />
      </m:ToFolderId>
      <m:ItemIds>
        <t:ItemId Id="AfwDoAAA="
                  ChangeKey="CQAAABYAAAApjGm7TnMWQ5TzjbhziLL0AAF25sM1" />
      </m:ItemIds>
    </m:MoveItem>
  </soap:Body>
</soap:Envelope>

Le serveur répond à la demande MoveItem avec un message MoveItemResponse qui inclut une valeur ResponseCode de NOERROR, ce qui indique que le message électronique a été déplacé avec succès.The server responds to the MoveItem request with a MoveItemResponse message that includes a ResponseCode value of NoError, which indicates that the email message was moved successfully. La réponse inclut également l' ItemId pour le message électronique dans le nouveau dossier, ce qui est important pour le stockage car l' ItemId est différent dans le nouveau dossier.The response also includes the ItemId for the email message in the new folder, which is important to store because the ItemId is different in the new folder.

Copier un message électronique à l’aide de l’API managée EWSCopy an email message by using the EWS Managed API

L’exemple de code suivant montre comment utiliser la méthode EmailMessage. Copy pour copier un message électronique existant d’un dossier vers un autre.The following code example shows how to use the EmailMessage.Copy method to copy an existing email message from one folder to another.

Cet exemple part du principe que le service est un objet ExchangeService valide et que l’ID ItemId est l' ID du message électronique à copier.This example assumes that service is a valid ExchangeService object, and that ItemId is the Id of the email message to copy. Les valeurs de certains paramètres ont été raccourcies pour des raisons de lisibilité.The values of some parameters have been shortened for readability.

// As a best practice, limit the properties returned by the Bind method to only those that are required.
PropertySet propSet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.Subject, EmailMessageSchema.ParentFolderId);
// Bind to the existing item by using the ItemId.
// This method call results in a GetItem call to EWS.
EmailMessage originalMessage = EmailMessage.Bind(service, ItemId, propSet);
// Copy the orignal message into another folder in the mailbox and store the returned item.
Item item = originalMessage.Copy("epQ/3AAA=");
// Check that the item was copied by binding to the copied email message 
// and retrieving the new ParentFolderId.
// This method call results in a GetItem call to EWS.
EmailMessage copiedMessage = EmailMessage.Bind(service, item.Id, propSet);
Console.WriteLine("An email message with the subject '" + originalMessage.Subject + "' has been copied from the '" + originalMessage.ParentFolderId + "' folder to the '" + copiedMessage.ParentFolderId + "' folder.");

Copier un message électronique à l’aide d’EWSCopy an email message by using EWS

L’exemple de code suivant montre comment utiliser l’opération CopyItem pour copier un message électronique dans un autre dossier de la même boîte aux lettres en envoyant l' ItemId du message électronique à déplacer et en spécifiant le dossier de destination dans l’élément ToFolderId .The following code example shows how to use the CopyItem operation to copy an email message to different folder in the same mailbox by sending the ItemId of the email message to move, and specifying the destination folder in the ToFolderId element.

Il s’agit également de la requête XML envoyée par l’API managée EWS lors de l’appel de la méthode Copy .This is also the XML request that is sent by the EWS Managed API when calling the Copy method. Les valeurs de certains attributs et éléments ont été raccourcies pour des raisons de lisibilité.The values of some attributes and elements have been 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="Exchange2013" />
  </soap:Header>
  <soap:Body>
    <m:CopyItem>
      <m:ToFolderId>
        <t:FolderId Id="pQ/3AAA=" />
      </m:ToFolderId>
      <m:ItemIds>
        <t:ItemId Id="2TSeSAAA="
                  ChangeKey="CQAAABYAAAApjGm7TnMWQ5TzjbhziLL0AAF2d+3+" />
      </m:ItemIds>
    </m:CopyItem>
  </soap:Body>
</soap:Envelope>

Le serveur répond à la demande CopyItem avec un message CopyItemResponse qui inclut une valeur ResponseCode NOERROR, ce qui indique que le message électronique a été correctement copié.The server responds to the CopyItem request with a CopyItemResponse message that includes a ResponseCode value of NoError, which indicates that the email message was copied successfully. La réponse inclut également l' ItemId pour le message électronique dans le nouveau dossier, ce qui est important pour le stockage car l' ItemId est différent dans le nouveau dossier.The response also includes the ItemId for the email message in the new folder, which is important to store because the ItemId is different in the new folder.

Voir aussiSee also