Partager via


Création d’une pièce jointe de message

S’applique à : Outlook 2013 | Outlook 2016

Une pièce jointe de message est des données supplémentaires, telles qu’un fichier, un autre message ou un objet OLE, que vous pouvez envoyer ou enregistrer avec un message. Chaque pièce jointe possède une collection de propriétés qui l’identifie et décrit son type et son rendu. Comme les destinataires, les pièces jointes de message sont accessibles uniquement par le biais du message auquel elles appartiennent. Par conséquent, pour qu’une pièce jointe soit utilisable, son message doit être ouvert.

Créer une pièce jointe de message

  1. Appelez la méthode IMessage ::CreateAttach du message et passez NULL comme identificateur d’interface. CreateAttach retourne un nombre qui identifie de façon unique la nouvelle pièce jointe dans le message. Le numéro de pièce jointe est stocké dans la propriété PR_ATTACH_NUM (PidTagAttachNumber) et est valide uniquement tant que le message contenant la pièce jointe est ouvert.

  2. Appelez IMAPIProp ::SetProps pour définir PR_ATTACH_METHOD (PidTagAttachMethod) pour indiquer comment accéder à la pièce jointe. PR_ATTACH_METHOD est obligatoire. Définissez-la sur :

    • ATTACH_BY_VALUE si la pièce jointe est des données binaires.

    • ATTACH_BY_REFERENCE, ATTACH_BY_REF_RESOLVE ou ATTACH_BY_REF_ONLY si la pièce jointe est un fichier.

    • ATTACH_EMBEDDED_MSG si la pièce jointe est un message.

    • ATTACH_OLE si la pièce jointe est un objet OLE.

  3. Définissez la propriété de données de pièce jointe appropriée :

  4. Définissez PR_ATTACH_RENDERING (PidTagAttachRendering) pour contenir la représentation graphique de la pièce jointe pour les pièces jointes de fichiers ou binaires. Ne la définissez pas pour les objets OLE, qui stockent les informations de rendu en interne, ou pour les messages joints.

  5. Définissez PR_RENDERING_POSITION (PidTagRenderingPosition) pour indiquer où la pièce jointe doit être affichée. PR_RENDERING_POSITION s’applique uniquement aux clients qui définissent la propriété PR_BODY . Si vous ne prenez en charge que PR_RTF_COMPRESSED, placez les informations d’espace réservé suivantes dans le flux compressé :

    \objattph

    Pour définir PR_RENDERING_POSITION, affectez un nombre qui représente un décalage ordinal en caractères, le premier caractère de PR_BODY étant égal à 0, si vous avez besoin de savoir où la pièce jointe est affichée dans le message, ou 0xFFFFFFFF, si vous ne restituez pas les pièces jointes dans PR_BODY.

  6. Définissez PR_ATTACH_FILENAME (PidTagAttachFilename) pour indiquer le nom court du fichier pour une pièce jointe et PR_ATTACH_LONG_FILENAME (PidTagAttachLongFilename) pour indiquer le nom du fichier tel qu’il est pris en charge sur une plateforme qui gère le format de nom de fichier long. Les deux propriétés sont facultatives. Toutefois, si vous définissez PR_ATTACH_LONG_FILENAME, définissez également PR_ATTACH_FILENAME.

  7. Définissez PR_DISPLAY_NAME (PidTagDisplayName) pour indiquer le nom de la pièce jointe qui peut apparaître dans une boîte de dialogue. PR_DISPLAY_NAME est facultatif.

Définir PR_ATTACH_DATA_BIN

  1. Appelez IMAPIProp ::OpenProperty pour ouvrir la propriété avec l’interface IStream .

  2. Si un fichier contient les données et qu’il est ouvert ou si vous avez besoin d’un contrôle explicite sur la taille de la mémoire tampon, appelez IStream ::Write dans une boucle pour placer les données dans le flux.

  3. Une autre option consiste à appeler OpenStreamOnFile pour créer un flux afin d’accéder au fichier de données, puis à appeler la méthode IStream ::CopyTo de ce flux pour copier les données dans le flux retourné par OpenProperty.

  4. Appelez la méthode IStream ::Commit du nouveau flux.

Définir PR_ATTACH_DATA_OBJ

  1. Appelez IMAPIProp ::OpenProperty pour ouvrir la propriété avec l’interface IStreamDocfile afin de créer un flux qui fonctionne avec le stockage structuré. IStreamDocfile est implémenté par les fournisseurs de magasins de messages pour offrir aux clients un moyen plus performant de stocker et de récupérer un stockage structuré. L’interface IStreamDocfile est identique à IStream, mais le contenu du flux est assuré d’être mis en forme en tant que stockage structuré. Si cet appel réussit, créez le flux avec les mêmes étapes que celles décrites pour définir PR_ATTACH_DATA_BIN.

  2. Si OpenProperty échoue :

    1. Appelez à nouveau OpenProperty en demandant IStorage.

    2. Appelez StgOpenStorage pour ouvrir l’objet OLE et renvoyer un objet de stockage.

    3. Appelez la méthode IStorage ::CopyTo de l’objet de stockage retourné pour copier vers l’objet de stockage retourné par OpenProperty.

    4. Appelez la méthode IStorage ::Commit du nouvel objet de stockage.

Définir PR_ATTACH_PATHNAME

  1. Allouez une structure SPropValue , en définissant le membre ulPropTagsur PR_ATTACH_PATHNAME et le membre Value.LPSZ sur la chaîne de caractères qui représente le nom de fichier.

  2. Appelez la méthode IMAPIProp ::SetProps de la pièce jointe.

Remarque

Si votre plateforme prend en charge les noms de fichiers longs, définissez PR_ATTACH_PATHNAME et PR_ATTACH_LONG_PATHNAME. Il peut être nécessaire d’effectuer un appel du système d’exploitation pour récupérer le nom de fichier court.

Voir aussi