Last Updated: 15 Oct, 2025

Descrivere i formati MSG ed EML, convertire bdt MSG ed EML in Java, .NET e Python?

Quando si lavora con i Formati di file di posta elettronica, si possono incontrare due formati comuni: MSG ed EML. Entrambi memorizzano messaggi di posta elettronica, ma differiscono per struttura, compatibilità e utilizzo. In questo post del blog, esploreremo cosa sono, le loro caratteristiche e differenze, e come convertire tra MSG ed EML utilizzando vari tipi di API ed esempi di codice.

Cos’è un file MSG?

Il formato di file MSG è un formato proprietario sviluppato da Microsoft. Si tratta di un singolo messaggio di posta elettronica, appuntamento, contatto o attività salvato da Microsoft Outlook. È un formato proprietario, il che significa che è progettato per funzionare al meglio all’interno dell’ecosistema Outlook. I file MSG contengono tutti i dettagli di un’e-mail, inclusi mittente, destinatario, data, oggetto, corpo e allegati, nonché funzionalità specifiche di Outlook come categorie e contrassegni.

Caratteristiche principali:

  • Memorizza il contenuto dell’email, gli allegati e i metadati (mittente, destinatario, oggetto).
  • Formato binario basato sul formato binario dei file composti (CFBF).
  • Memorizza metadati, corpo dell’email (RTF o HTML) e allegati.
  • Utilizzato principalmente in ambienti Windows.

Cos’è un file EML?

Il formato file EML è uno standard aperto definito in RFC 5322 ed è un formato di posta elettronica più universale utilizzato da vari client di posta elettronica come Mozilla Thunderbird, Windows Mail, Outlook Express e Apple Mail. Essendo un formato di testo normale, è più versatile e può essere aperto su diversi sistemi operativi e dispositivi.

Caratteristiche principali:

  • Formato basato su testo che memorizza intestazioni e contenuti codificati MIME.
  • Supporta pienamente la formattazione HTML, le immagini in linea e gli allegati.
  • Indipendente dalla piattaforma e leggibile dall’uomo. * Più facile da elaborare a livello di programmazione.

Differenze chiave tra MSG ed EML

N.FunzionalitàFormato MSGFormato EML
1Tipo di formatoBinario (proprietario)Testo normale (standard)
2CompatibilitàMicrosoft OutlookThunderbird, Apple Mail, Gmail, ecc.
3Supporto metadatiCompleto (inclusi oggetti incorporati)Limitato (intestazioni di base e MIME)
4Richiede leggibilitàOutlook o strumenti specializzatiLeggibile (basato su testo)
5Gestione allegatiIncorporato nel fileCodificato Base64 in MIME

Ora esploriamo come convertire MSG in EML e EML in MSG utilizzando le più diffuse API e librerie open source. Di seguito sono riportati esempi di codice che utilizzano diverse API.

Come convertire MSG in EML utilizzando le API .NET?

Possiamo utilizzare le librerie open source MsgKit e MimeKit per convertire file MSG in formato EML all’interno di applicazioni .NET. Sebbene MsgKit da solo non offra l’esportazione nativa in formato .eml, semplifica la lettura e l’estrazione di tutti i componenti di un file .msg, che può quindi essere scritto come .eml utilizzando altre librerie compatibili con MIME come MimeKit o MailKit, come mostrato nel seguente esempio di codice.

Come convertire file MSG in EML utilizzando MsgKit?

using MsgReader.Outlook;
using MimeKit;
using System.IO;

var msg = new Storage.Message("sample.msg");
var mimeMessage = new MimeMessage();
mimeMessage.Subject = msg.Subject;
mimeMessage.From.Add(new MailboxAddress(msg.SenderName, msg.SenderEmail));
mimeMessage.To.Add(MailboxAddress.Parse(msg.GetEmailRecipients(Storage.RecipientType.To)[0].Email));
mimeMessage.Body = new TextPart("plain") { Text = msg.BodyText };

using var stream = File.Create("output.eml");
mimeMessage.WriteTo(stream);

Come convertire un file EML in MSG utilizzando MimeKit?

using MsgKit;
using System.IO;

var email = new Email(
    new Sender("sender@example.com", "Sender Name"),
    "Subject of Email",
    "This is the plain body text.");

email.Recipients.AddTo("recipient@example.com", "Recipient Name");
email.Save(new FileInfo("output.msg"));

Convertire MSG in EML tramite API Java Open Source?

Apache POI-HSMF e JavaMail possono essere utilizzati per caricare e convertire i file MSG di Outlook in formato EML. Apache POI-HSMF può leggere i file MSG e JavaMail può generare file EML. La conversione da EML a MSG in Java richiederebbe in genere SDK a pagamento (come Aspose) o l’analisi MIME manuale e la scrittura di file binari MSG, attualmente non fattibili utilizzando librerie Java puramente open source.

Il seguente esempio di codice mostra come Apache POI-HSMF può leggere i file MSG e JavaMail può generare file EML.

import org.apache.poi.hsmf.MAPIMessage;
import javax.mail.*;
import javax.mail.internet.*;

public class MsgToEmlConverter {
    public static void convert(String msgPath, String emlPath) throws Exception {
        MAPIMessage msg = new MAPIMessage(msgPath);
        MimeMessage eml = new MimeMessage((Session) null);
        
        eml.setFrom(new InternetAddress(msg.getDisplayFrom()));
        eml.setSubject(msg.getSubject());
        eml.setText(msg.getTextBody());
        
        // Save EML file
        eml.writeTo(new java.io.FileOutputStream(emlPath));
    }

    public static void main(String[] args) throws Exception {
        convert("input.msg", "output.eml");
    }
}

Le migliori API commerciali per conversioni ad alte prestazioni

1. Aspose.Email (multipiattaforma .NET/Java/Python)

Aspose.Email offre una potente soluzione commerciale per lavorare con i file di posta elettronica. Con solo un paio di righe di codice, gli sviluppatori software possono caricare, manipolare e convertire MSG in EML e EML in MSG utilizzando vari linguaggi di programmazione come .NET, Java, Python e molti altri. L’esempio seguente mostra come convertire MSG ed EML utilizzando Aspose.Email per API .NET.

Come convertire EML in MSG utilizzando Aspose.Email per API .NET?

// Convert MSG to EML
using Aspose.Email.Mime;
using Aspose.Email.Outlook;

var msg = MapiMessage.FromFile("input.msg");
msg.Save("output.eml", SaveOptions.DefaultEml);

// Convert EML to MSG
var eml = MailMessage.Load("input.eml");
eml.Save("output.msg", SaveOptions.DefaultMsgUnicode);

Come convertire b/t EML in MSG utilizzando Aspose.Email per Java API?


import com.aspose.email.*; // Load the MSG file MailMessage message = MailMessage.load("input.msg"); // Save as EML message.save("output.eml", SaveOptions.getDefaultEml());

Come convertire b/t EML in MSG utilizzando Aspose.Email per Python API?


import aspose.email as ae

# Load the EML file
eml = ae.MailMessage.load("input.eml")

# Save as MSG
eml.save("output.msg", ae.SaveOptions.default_msg_unicode)

2. API Microsoft Graph

Un’altra buona opzione commerciale da considerare è API Microsoft Graph (basata su cloud)

Converti MSG in EML tramite API Microsoft Graph (basata su cloud)

import requests

headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
response = requests.post(
    "https://graph.microsoft.com/v1.0/me/messages/{id}/content?format=eml",
    headers=headers
)
with open("output.eml", "wb") as f:
    f.write(response.content)

Bonus: Convertitori online (senza codice)

Se non vuoi programmare, ecco uno strumento online molto affidabile e utile che carica e converte facilmente file MSG in formato EML.

Considerazioni finali

Sia i formati MSG che EML hanno i loro punti di forza unici. MSG è ideale per gli ecosistemi Microsoft con metadati completi e allegati incorporati, mentre EML offre maggiore flessibilità grazie alla sua struttura in testo semplice basata su MIME. Che tu sia uno sviluppatore .NET, Java, Python o JavaScript, esistono strumenti open source e commerciali per convertire tra i formati MSG ed EML. Scegli in base al linguaggio, alle dimensioni del progetto e alle esigenze di licenza.

FAQ

D: Posso aprire file MSG senza Outlook?

R: Sì, librerie open source come MsgReader (C#) o extract-msg (Python) consentono di leggere file MSG senza Outlook.

D: Qual è il formato migliore per l’archiviazione delle email?

R: EML è migliore grazie al suo standard aperto e al formato leggibile.

D: Esistono API gratuite per convertire MSG in EML?

R: Sì, librerie come MsgReader (.NET) ed extract-msg (Python) sono completamente gratuite e open source.

Vedi anche