Lavorare con gli allegati del messaggio

Analisi e salvataggio degli allegati

I file di messaggi Outlook possono contenere uno o più allegati. Aspose.Email permette agli sviluppatori di scorrere gli allegati in un file MSG e salvarli su disco. Questo argomento descrive il processo. Descrive inoltre come incorporare un allegato.

Aspose.Email MapiMessage classe è usata per caricare un file MSG da disco ed espone il getAttachments() metodo che fa riferimento al MapiAttachment collezione di oggetti associata al file MSG. Il MapiAttachment l’oggetto espone ulteriori metodi che eseguono azioni sull’allegato.

Per salvare gli allegati in un file MSG su disco con il nome e l’estensione originali:

  1. Crea un’istanza di MapiMessage classe per caricare un file MSG usando il Load() metodo statico.
  2. Chiama il MapiRecipient classe getAttachments() metodo per ottenere un riferimento alla collezione di MapiAttachment oggetti associati al file MSG.
  3. Itera attraverso il MapiAttachmentCollection per visualizzare i contenuti relativi a ciascuno MapiAttachment oggetto tramite i suoi metodi pubblici.
  4. Chiama il MapiAttachment classe save() metodo per salvare l’allegato su disco.  

Incorporare messaggi come allegati

Un messaggio Microsoft Outlook può contenere altri messaggi Microsoft Outlook negli allegati, sia come messaggi regolari, descritti sopra, sia come messaggi incorporati. Il MapiAttachmentCollection fornisce membri sovraccaricati del metodo add per creare messaggi Outlook con entrambi i tipi di allegati. I file Outlook MSG incorporati in un file MSG contengono un PR_ATTACH_METHOD con valore 5.

Lettura di un messaggio incorporato da un allegato

Inserimento e sostituzione di allegati MSG

L’API Aspose.Email fornisce la possibilità di inserire allegati a un indice specifico nel messaggio genitore. Offre anche la possibilità di sostituire i contenuti di un allegato con un altro allegato di messaggio.

Inserire allegato MSG in una posizione specifica

L’API Aspose.Email fornisce la possibilità di inserire un allegato MSG in un MSG genitore usando il MapiAttachmentCollection.Insert() metodo.

Sostituire i contenuti degli allegati MSG incorporati

Questo può essere usato per sostituire i contenuti degli allegati incorporati con quelli nuovi usando il Sostituisci metodo. Tuttavia, non può essere usato per inserire un allegato con PR_ATTACH_NUM = 4 (per esempio) nella collezione con collection.Count = 2.

Salva gli allegati da un messaggio firmato digitalmente

L’API Aspose.Email fornisce la possibilità di ottenere o impostare un valore che indica se il messaggio firmato in chiaro sarà decodificato. 

Rinominare un allegato in un MapiMessage

Aspose.Email rende possibile modificare il Nome visualizzato valore della proprietà in Allegati MapiMessage.

Il seguente esempio di codice dimostra come aggiornare i nomi visualizzati del primo e del secondo allegato all’interno del messaggio Mapi caricato:

MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("New display name 1");
msg.getAttachments().get_Item(1).setDisplayName("New display name 2");

Verifica se un allegato è in linea o regolare

La differenza tra allegati in linea e regolari è il modo in cui sono presentati all’interno di un’email. Gli allegati in linea sono incorporati nel corpo dell’email e possono essere visualizzati senza aprire un file separato o scaricare nulla. Gli allegati regolari, invece, sono file separati allegati all’email ma non mostrati direttamente nel corpo del messaggio e devono essere scaricati e aperti esternamente. Il MapiAttachment.IsInline proprietà del MapiAttachment la classe ottiene un valore che indica se l’allegato è in linea o regolare.

Il seguente esempio di codice carica un messaggio email da un file e poi recupera le informazioni sugli allegati, stampando specificamente il nome visualizzato di ciascun allegato e se è in linea nel messaggio o meno:

MapiMessage message = MapiMessage.load("fileName");

for (MapiAttachment attach : message.getAttachments()) {
    System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}