Caricamento e Salvataggio dei Messaggi

Caricamento e Salvataggio di Messaggi Email

Rileva un Formato di File

L’API Aspose.Email fornisce la capacità di rilevare il formato del file del messaggio fornito. Il DetectFileFormat metodo del FileFormatUtil la classe può essere usata per realizzare ciò. Le seguenti classi e metodi possono essere usati per rilevare il formato del file caricato.

Il frammento di codice seguente ti mostra come rilevare i formati dei file.

Carica un Messaggio Email

Per caricare un messaggio con opzioni di caricamento specifiche, Aspose.Email fornisce il LoadOptions classe che può essere usata come segue:

Preserva il Formato del Messaggio Incorporato durante il Caricamento

Salva e Converti Messaggi Email

Aspose.Email rende facile convertire qualsiasi tipo di messaggio in un altro formato. Per dimostrare questa funzionalità, il codice in questo articolo carica tre tipi di messaggi dal disco e li salva nuovamente in altri formati. La classe base SaveOptions e le classi EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions per impostazioni aggiuntive durante il salvataggio MailMessage può essere usato per salvare i messaggi in altri formati. L’articolo mostra come usare queste classi per salvare una email di esempio come:

  • Formato EML.
  • Outlook MSG.
  • Formato MHTML.
  • Formato HTML.

Carica e Salva un Messaggio Email

Il frammento di codice seguente ti mostra come caricare un messaggio EML e salvarlo su disco nello stesso formato.

Carica e Salva un Messaggio Email Preservando i Confini Originali

Il frammento di codice seguente ti mostra come caricare EML e salvare come EML preservando i confini originali.

Salvataggio come EML Preservando gli Allegati TNEF

Il frammento di codice seguente ti mostra come salvare come EML preservando gli allegati TNEF.

Salva EML in MSG

Il frammento di codice seguente ti mostra come caricare un messaggio EML e convertirlo in MSG usando l’opzione appropriata da SaveOptions.

Salva EML in MSG con Date Preservate

Il MsgSaveOptions la classe permette di salvare il messaggio sorgente come file Outlook Message (MSG) preservando le date. Il frammento di codice seguente ti mostra come salvare come MSG con Date Preservate.

Salva EML come MHTML

Diverse opzioni di MHTML possono essere usate per ottenere i risultati desiderati. Il frammento di codice seguente ti mostra come caricare un messaggio EML in MailMessage e convertilo in MHTML con la data del messaggio nel sistema UTC.

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);

// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
    mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}

Formatta le Intestazioni MHT Globalmente quando Salvi da EML

Con Aspose.Email, è possibile utilizzare le opzioni di formattazione globale per l’intestazione Mht. Le opzioni globali impostano la formattazione comune di un’intestazione Mht per tutti MhtSaveOptions istanze. Questa funzionalità è progettata per evitare di impostare la formattazione per ogni istanza di MhtSaveOptions.

Usa i seguenti metodi del GlobalFormattingOptions classe e il campione di codice sotto per impostare la formattazione di un’intestazione Mht:

// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();

Converti EML in MHTML con Impostazioni Opzionali

Il MhtSaveOptions la classe fornisce opzioni aggiuntive per salvare i messaggi email in formato MHTML. L’enumeratore MhtFormatOptions consente di scrivere informazioni email aggiuntive nel MHTML di output. I seguenti campi aggiuntivi possono essere scritti:

  • WriteHeader - scrive l’intestazione email nel file di output.
  • WriteOutlineAttachments - scrive gli allegati outline nel file di output.
  • WriteCompleteEmailAddress - scrive l’indirizzo email completo nel file di output.
  • NoEncodeCharacters - non dovrebbe essere usata alcuna codifica di trasferimento dei caratteri.
  • HideExtraPrintHeader - nasconde l’intestazione di stampa extra dalla parte alta del file di output.
  • WriteCompleteToEmailAddress - scrive l’indirizzo email completo del destinatario nel file di output.
  • WriteCompleteFromEmailAddress - scrive l’indirizzo email completo del mittente nel file di output.
  • WriteCompleteCcEmailAddress - scrive gli indirizzi email completi di qualsiasi destinatario in copia carbone nel file di output.
  • WriteCompleteBccEmailAddress - scrive l’indirizzo email completo di qualsiasi destinatario in copia nascosta nel file di output.
  • RenderCalendarEvent - scrive il testo dell’evento del calendario nel file di output.
  • SkipByteOrderMarkInBody - scrive i byte Byte Order Mark (BOM) nel file di output.
  • RenderVCardInfo - scrive il testo dalla VCard AlternativeView nel file di output.
  • DisplayAsOutlook - visualizza l’intestazione From.
  • RenderTaskFields - scrive campi specifici del Task nel file di output.
  • Nessuno - Nessuna impostazione specificata.

Il frammento di codice seguente ti mostra come convertire file EML in MHTML con impostazioni opzionali.

Renderizza Eventi del Calendario durante la Conversione in MHTML

Il MhtFormatOptions.RenderCalendarEvent renderizza gli eventi del Calendario nell’MTHML di output. Il frammento di codice seguente ti mostra come renderizzare gli eventi del calendario durante la conversione in MHTML.

Esporta Email in MHT senza Immagini Inline

Esporta email in MHT con fuso orario personalizzato

MailMessage classe fornisce il setTimeZoneOffset proprietà per impostare il fuso orario personalizzato durante l’esportazione in MHT. Il seguente frammento di codice mostra come esportare l’email in MHT con fuso orario personalizzato.

MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());

// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);

MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);

Esportare email in EML

Il seguente frammento di codice mostra come esportare le email in formato EML.

Salva email in HTML

Il HtmlSaveOptions la classe consente di esportare il corpo del messaggio in HTML. Il seguente frammento di codice mostra come salvare un messaggio in HTML.

Salva il messaggio email come HTML con percorso relativo alle risorse

Quando si esportano i messaggi email in formato HTML, è possibile scegliere di salvare le risorse email con percorsi relativi. Questa funzionalità offre maggiore flessibilità nel collegamento delle risorse nel file HTML di output, facilitando la condivisione e la visualizzazione delle email salvate su diversi sistemi. Il HtmlSaveOptions.UseRelativePathToResources la proprietà offre la possibilità di salvare le risorse con percorsi relativi. Il valore predefinito della proprietà è false (le risorse sono salvate con percorsi assoluti). Quando impostata su true, le risorse sono salvate con percorsi relativi. I file HTML con percorsi relativi sono più portabili e possono essere visualizzati correttamente indipendentemente dalla struttura dei file dell’ambiente di hosting. È possibile scegliere tra percorsi assoluti e relativi a seconda delle esigenze. È possibile definire percorsi personalizzati per le risorse usando il ResourceHtmlRenderingHandler evento.

Salva con percorso relativo predefinito per le risorse

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);

msg.save("target.html", htmlSaveOptions);

In questo caso, le risorse saranno salvate nella cartella [nome file html].files, nello stesso percorso del file .html e l’HTML farà riferimento alle risorse tramite percorsi relativi.

Salva con percorso assoluto per le risorse

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

msg.save("target.html", htmlSaveOptions);

Come nel primo caso, le risorse verranno salvate nella cartella [nome file html].files per impostazione predefinita, ma l’HTML farà riferimento alle risorse usando percorsi assoluti.

Percorso relativo personalizzato usando l’evento ResourceHtmlRenderingHandler

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    @Override
    public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
        if (sender instanceof AttachmentBase) {
            AttachmentBase attachment = (AttachmentBase) sender;
            // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
            args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
        }
    }
});

msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);

Utilizzando il ResourceHtmlRenderingHandler evento, puoi impostare percorsi relativi o assoluti personalizzati per le risorse. Quando personalizzi i percorsi con il ResourceHtmlRenderingHandler gestore dell’evento, e poiché UseRelativePathToResources è impostata su true, dovresti assegnare un percorso relativo al PathToResourceFile proprietà per garantire un riferimento corretto.

Conserva le icone personalizzate in un messaggio durante la conversione in HTML

A volte, il messaggio contiene allegati in linea, visualizzati come icone nell corpo del messaggio. Tali messaggi possono creare problemi durante la conversione in HTML, poiché le icone degli allegati vengono perse. Questo accade perché le icone degli allegati non sono contenute direttamente nel messaggio.

L’utente di Aspose.Email può personalizzare le icone per gli allegati quando converte il messaggio in HTML. Per farlo, il HtmlSaveOptions.ResourceHtmlRendering l’evento viene utilizzato per personalizzare il rendering dei file di risorsa (come gli allegati) quando si salva un messaggio email in un file HTML. Nell’esempio di codice riportato di seguito, il gestore dell’evento viene usato per impostare dinamicamente il percorso dei file di risorsa (icone) in base al tipo di contenuto dell’allegato. Ciò consente un rendering personalizzato delle risorse nell’output HTML in base al loro tipo di file.


 HtmlSaveOptions options = new HtmlSaveOptions();

options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {

   @Override

   public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {

        AttachmentBase attachment = (AttachmentBase) sender;

        e.setCaption(attachment.getContentType().getName());

       if (attachment.getContentType().getName().endsWith(".pdf")) {

            e.setPathToResourceFile("pdf_icon.png");

       } else if (attachment.getContentType().getName().endsWith(".docx")) {

            e.setPathToResourceFile("word_icon.jpg");

       } else if (attachment.getContentType().getName().endsWith(".jpg")) {

            e.setPathToResourceFile("jpeg_icon.png");

       } else {

            e.setPathToResourceFile("not_found_icon.png");

       }

   }

});

options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);

String fileName = "message.msg";

MailMessage mailMessage = MailMessage.load(fileName);

mailMessage.save("fileName.html", options);

Imposta ora e fuso orario quando salvi EML come HTML

Gli utenti di Aspose.Email possono impostare i formati di visualizzazione dell’ora e del fuso orario in HtmlSaveOptions. Il HeadersFormattingOptions la classe consente di specificare le opzioni di formattazione delle intestazioni quando si salva MailMessage in formato Mhtml o Html. I seguenti metodi della HtmlFormatOptions la classe specifica i campi da visualizzare nel file di output:

  • RenderCalendarEvent - Indica che il testo dell’evento del calendario deve essere scritto nell’output mhtml.
  • RenderVCardInfo - Indica che il testo da VCard AlternativeView deve essere scritto nell’HTML di output.

Il seguente esempio di codice mostra come impostare l’ora e il fuso orario durante il salvataggio di EML in HTML:

MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");

Salvataggio in HTML senza incorporare risorse

Salvataggio di un messaggio come modello Outlook (.oft)

Il seguente frammento di codice mostra come salvare un messaggio come file modello Outlook (.oft).