Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Outlook 2013 | Outlook 2016
Un client peut utiliser l’une des quatre méthodes pour copier ou déplacer un message ou un dossier :
En définissant les indicateurs et paramètres appropriés, Vous pouvez faire en sorte que CopyTo et CopyProps fonctionnent comme CopyFolder ou CopyMessages. Tenez compte des problèmes suivants lors du choix de la méthode à appeler :
Copiez-vous ou déplacez-vous un dossier ou un message ?
Que savez-vous sur le dossier ou le message à déplacer ou à copier ?
Combien de propriétés du dossier ou du message seront déplacées ou copiées ?
Vous pouvez utiliser les méthodes IMAPIProp pour copier ou déplacer un dossier ou un message. IMAPIFolder ::CopyMessages fonctionne uniquement avec les messages ; IMAPIFolder ::CopyFolder fonctionne uniquement avec les dossiers.
Bien que l’utilisation des méthodes IMAPIFolder ne nécessite aucune connaissance des propriétés prises en charge par le dossier ou le message à copier ou déplacer, vous devez avoir certaines connaissances pour utiliser les méthodes IMAPIProp . Avec IMAPIProp ::CopyProps, vous devez être en mesure de spécifier explicitement les propriétés de dossier ou de message que vous souhaitez copier ou déplacer. Avec IMAPIProp ::CopyTo, sauf si vous souhaitez copier ou déplacer toutes les propriétés, vous devez spécifier explicitement celles qui doivent être exclues. Pour plus d’informations sur ces méthodes, consultez Copie des propriétés MAPI.
Le nombre de propriétés à copier ou à déplacer peut affecter votre décision quant à la méthode à utiliser. Si vous copiez ou déplacez plusieurs messages, appelez IMAPIFolder ::CopyMessages. Un autre choix consiste à appeler IMAPIProp ::CopyProps pour copier uniquement la propriété PR_CONTAINER_CONTENTS (PidTagContainerContents) du dossier. La procédure suivante montre comment utiliser CopyMessages.
Pour copier ou déplacer un ou plusieurs messages
Recherchez les identificateurs d’entrée valides pour les dossiers source et de destination.
Ouvrez ces dossiers en mode lecture/écriture en appelant IMAPISession ::OpenEntry ou IMsgStore ::OpenEntry et en définissant l’indicateur MAPI_MODIFY.
Vérifiez que le pointeur d’interface retourné par OpenEntry est un pointeur d’interface IMAPIFolder . Si ce n’est pas le cas, effectuez un cast vers le type LPMAPIFOLDER.
Créez un tableau d’identificateurs d’entrée représentant un ou plusieurs messages à copier ou déplacer.
Appelez IMAPIFolder ::CopyMessages avec les indicateurs suivants définis :
MESSAGE_MOVE, si vous souhaitez effectuer une opération de déplacement.
MESSAGE_DIALOG et passez un handle de fenêtre dans le paramètre ulUIParam si vous souhaitez que le dossier affiche un indicateur de progression.
Relâchez les pointeurs IMAPIFolder pour les dossiers source et de destination.
Si vous souhaitez copier le contenu complet d’un dossier dans un autre dossier, appelez la méthode IMAPIFolder ::CopyFolder ou IMAPIProp ::CopyTo du dossier source.
Pour copier quelques-unes des propriétés d’un dossier, appelez sa méthode IMAPIProp ::CopyProps . Pour copier la plupart des propriétés d’un dossier, appelez IMAPIProp ::CopyTo.
Par exemple, si vous souhaitez copier les propriétés PR_DISPLAY_NAME (PidTagDisplayName) et PR_COMMENT (PidTagComment), vous disposez des options suivantes :
Appelez IMAPIFolder ::CopyFolder pour copier toutes les propriétés de dossier, puis supprimer les propriétés indésirables du nouveau dossier.
Appelez CopyTo et excluez toutes les propriétés du dossier, à l’exception de PR_DISPLAY_NAME et PR_COMMENT.
Appelez CopyProps, en passant PR_DISPLAY_NAME et PR_COMMENT dans le tableau include.
Dans ce cas, CopyProps est le meilleur choix, car il est destiné à être utilisé pour copier un petit ensemble de propriétés et est l’appel le plus simple à implémenter.
Pour copier ou déplacer uniquement les propriétés du dossier, sans inclure de messages, appelez la méthode IMAPIProp ::CopyTo du dossier et excluez les propriétés suivantes :
PR_CONTAINER_CONTENTS (PidTagContainerContents)
PR_FOLDER_ASSOCIATED_CONTENTS (PidTagFolderAssociatedContents)
Les méthodes de copie peuvent retourner S_OK, indiquant la réussite totale, MAPI_W_PARTIAL_COMPLETION, indiquant une réussite partielle ou une erreur. Si MAPI_W_PARTIAL_COMPLETION est retourné, utilisez la macro HR_FAILED pour accéder à une erreur plus spécifique. Pour plus d’informations, consultez Utilisation de macros pour la gestion des erreurs.
Si vous copiez des messages d’une banque de messages vers une autre et qu’Unicode n’est pas pris en charge par les deux, sachez que les informations peuvent être perdues en raison de la conversion de la page de codes. En règle générale, vous ne pouvez pas savoir si les magasins de messages prennent en charge un ou les deux formats, ce qui rend impossible la copie des propriétés de texte sous forme de chaînes ASCII ou de chaînes Unicode. Si vous prenez en charge Unicode, essayez d’effectuer une copie Unicode . en cas d’échec avec la valeur d’erreur MAPI_E_BAD_CHARWIDTH, utilisez ASCII.