Last Updated: 15 Oct, 2025

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 MSG | Formato EML |
---|---|---|---|
1 | Tipo di formato | Binario (proprietario) | Testo normale (standard) |
2 | Compatibilità | Microsoft Outlook | Thunderbird, Apple Mail, Gmail, ecc. |
3 | Supporto metadati | Completo (inclusi oggetti incorporati) | Limitato (intestazioni di base e MIME) |
4 | Richiede leggibilità | Outlook o strumenti specializzati | Leggibile (basato su testo) |
5 | Gestione allegati | Incorporato nel file | Codificato 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.