Gestion des pièces jointes du message
Gestion des pièces jointes dans Outlook
Création et enregistrement de fichiers de messages Outlook (MSG) explique comment créer et enregistrer des messages, et comment créer des fichiers MSG avec des pièces jointes. Cet article explique comment gérer les pièces jointes Microsoft Outlook avec Aspose.Email. Les pièces jointes d’un fichier de message sont accessibles et enregistrées sur le disque en utilisant le MapiMessage classe Pièces jointes propriété. La Pièces jointes la propriété est une collection de type MapiAttachmentCollection classe.
Vérifier le type de pièce jointe (En ligne ou Classique)
Les pièces jointes en ligne et les pièces jointes classiques ont des objectifs différents. Les pièces jointes en ligne sont intégrées visuellement au message électronique et sont généralement des images ou des fichiers multimédias. En revanche, les pièces jointes classiques sont des fichiers séparés attachés au courriel et peuvent inclure différents types de fichiers. Le MapiAttachment.IsInline propriété du MapiAttachment la classe obtient une valeur indiquant si la pièce jointe est intégrée ou normale.
L’exemple de code suivant extrait et affiche les informations sur chaque pièce jointe du MapiMessage chargé, y compris leurs noms d’affichage et si elles sont en ligne ou non.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Vérifier le type de pièce jointe (IsReference)
Le MapiAttachment la classe inclut le IsReference propriété qui permet aux développeurs d’identifier les pièces jointes de référence dans un message. Avec l’exemple de code suivant, vous pouvez vérifier si une pièce jointe est une pièce jointe de référence :
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Enregistrer les pièces jointes à partir de fichiers MSG
Pour enregistrer les pièces jointes d’un fichier MSG :
- Itérer à travers le MapiAttachmentCollection collection et récupérez les pièces jointes individuelles.
- Pour enregistrer les pièces jointes, appelez la méthode Save() de la classe MapiAttachment.
L’extrait de code suivant montre comment enregistrer les pièces jointes sur le disque local.
Extraire les pièces jointes des fichiers MSG formatés en RTF
Pour les messages formatés en RTF, le code suivant peut être utilisé pour différencier et extraire les pièces jointes qui sont soit en ligne, soit affichées sous forme d’icône dans le corps du message. L’extrait de code suivant montre comment identifier et extraire une pièce jointe intégrée d’un MSG formaté en RTF.
var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");
foreach (var attachment in eml.Attachments)
{
if (IsAttachmentInline(attachment))
{
try
{
SaveAttachment(attachment, Data.Out/new Guid().ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
static bool IsAttachmentInline(MapiAttachment attachment)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "\x0003ObjInfo")
{
var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
return (odtPersist1 & (1 << (7 - 1))) == 0;
}
}
return false;
}
static void SaveAttachment(MapiAttachment attachment, string fileName)
{
foreach (var property in attachment.ObjectData.Properties.Values)
{
if (property.Name == "Package")
{
using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
fs.Write(property.Data, 0, property.Data.Length);
}
}
}
Obtenir les pièces jointes de messages électroniques imbriqués
Les pièces jointes OLE intégrées apparaissent également dans le MapiMessage classe de collection de pièces jointes. L’exemple de code suivant analyse un fichier de message à la recherche de pièces jointes de messages intégrés et l’enregistre sur le disque. Le MapiMessage la méthode statique FromProperties() de la classe peut créer un nouveau message à partir d’une pièce jointe intégrée. L’extrait de code suivant montre comment obtenir les pièces jointes de messages électroniques imbriqués.
Supprimer les pièces jointes
La bibliothèque Aspose Outlook offre la fonctionnalité de supprimer des pièces jointes des fichiers Microsoft Outlook Message (.msg) :
- Appelez la méthode RemoveAttachments(). Elle prend le chemin du fichier du message en paramètre. Elle est implémentée comme méthode publique statique, vous n’avez donc pas besoin d’instancier l’objet.
L’extrait de code suivant montre comment supprimer des pièces jointes.
Vous pouvez également appeler la MapiMessage méthode statique de classe DestroyAttachment(). Cela fonctionne plus rapidement que RemoveAttachment(), car la méthode RemoveAttachment() analyse le fichier de message.
Ajouter des pièces jointes MSG
Un message Outlook peut contenir d’autres messages Microsoft Outlook en pièces jointes, soit en tant que messages classiques, soit intégrés. Le MapiAttachmentCollection fournit des membres surchargés de la méthode Add pour créer des messages Outlook avec les deux types de pièces jointes.
Essayez-le !
Ajouter ou supprimer des pièces jointes d’e-mail avec le gratuit Aspose.Email Editor App.
Ajouter des pièces jointes de référence aux MapiMessages
Le ReferenceAttachmentOptions la classe simplifie l’ajout de pièces jointes de référence en encapsulant toutes les propriétés nécessaires dans un seul objet.
Paramètres de ReferenceAttachmentOptions :
- sharedLink : Un lien partagé entièrement qualifié vers la pièce jointe fourni par le service web hébergeant le fichier.
- url : L’emplacement du fichier ou l’URL de la ressource.
- providerName : Le nom du fournisseur de pièces jointes de référence (p. ex., Google Drive, Dropbox).
- Exemple : Ajout d’une pièce jointe de référence avec ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
// Add reference attachment
msg.Attachments.Add("Document.pdf", options);
Intégrer des messages en tant que pièces jointes
L’extrait de code suivant montre comment intégrer une pièce jointe de fichier MSG à un message.
Lire les messages intégrés à partir des pièces jointes
L’extrait de code suivant vous montre comment lire des messages intégrés à partir de pièces jointes.
Insertion et remplacement de pièces jointes
L’API Aspose.Email offre la capacité d’insérer des pièces jointes à un indice spécifique dans le message parent. Elle offre également la possibilité de remplacer le contenu d’une pièce jointe par celui d’une autre pièce jointe de message.
Essayez-le !
Exécutez le ReplaceAttach projet d’application simple, et essayez les capacités d’Aspose.Email pour remplacer les pièces jointes en action.
Insérer des pièces jointes à des emplacements spécifiques
L’API Aspose.Email offre la capacité d’insérer une pièce jointe MSG dans un MSG parent en utilisant la méthode Insert de MapiAttachmentCollection : MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). L’extrait de code suivant montre comment insérer une pièce jointe à un emplacement spécifique.
Remplacer le contenu de la pièce jointe
Cela permet de remplacer le contenu d’une pièce jointe incorporée par un nouveau en utilisant la méthode Replace. Toutefois, il est impossible d’insérer une pièce jointe avec PR_ATTACH_NUM = 4 (par exemple) dans une collection dont le compteur est de 2. L’extrait de code suivant montre comment remplacer le contenu d’une pièce jointe.
Renommer les pièces jointes dans MapiMessage
Il est possible de modifier la valeur de la propriété DisplayName dans les pièces jointes MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Enregistrer les pièces jointes des messages signés numériquement
L’API Aspose.Email offre la capacité d’obtenir ou de définir une valeur indiquant si le message signé en clair sera décodé.