Last Updated: 15 Oct, 2025

Saat menggunakan Format berkas email, Anda mungkin menemukan dua format umum: MSG dan EML. Keduanya menyimpan pesan email tetapi berbeda dalam hal struktur, kompatibilitas, dan penggunaan. Dalam postingan blog ini, kita akan membahas definisi, fitur, dan perbedaannya, serta cara mengonversi antara MSG dan EML menggunakan berbagai jenis API dan contoh kode.
Apa itu Berkas MSG?
Format berkas MSG adalah format khusus yang dikembangkan oleh Microsoft. Berkas ini berisi satu pesan email, janji temu, kontak, atau tugas yang disimpan dari Microsoft Outlook. Ini adalah format khusus, artinya dirancang untuk bekerja paling baik dalam ekosistem Outlook. Berkas MSG menyimpan semua detail email, termasuk pengirim, penerima, tanggal, subjek, isi, dan lampiran, serta fitur khusus Outlook seperti kategori dan tanda.
Fitur Utama:
- Menyimpan konten email, lampiran, dan metadata (pengirim, penerima, subjek).
- Format biner berdasarkan Compound File Binary Format (CFBF).
- Menyimpan metadata, isi email (RTF atau HTML), dan lampiran.
- Digunakan terutama di lingkungan Windows.
Apa itu Berkas EML?
Format berkas EML adalah standar terbuka yang didefinisikan dalam RFC 5322, dan merupakan format email yang lebih universal yang digunakan oleh berbagai klien email seperti Mozilla Thunderbird, Windows Mail, Outlook Express, dan Apple Mail. Karena merupakan format teks biasa, format ini lebih fleksibel dan dapat dibuka di berbagai sistem operasi dan perangkat.
Fitur Utama:
- Format berbasis teks yang menyimpan header dan konten yang dikodekan MIME.
- Sepenuhnya mendukung pemformatan HTML, gambar sebaris, dan lampiran.
- Tidak bergantung pada platform dan dapat dibaca manusia.
- Lebih mudah diproses secara terprogram.
Perbedaan Utama antara MSG dan EML
No. | Fitur | Format MSG | Format EML |
---|---|---|---|
1 | Jenis Format | Biner (Proprietary) | Teks Biasa (Standar) |
2 | Kompatibilitas | Microsoft Outlook | Thunderbird, Apple Mail, Gmail, dll. |
3 | Dukungan Metadata | Penuh (termasuk objek tertanam) | Terbatas (header dasar dan MIME) |
4 | Memerlukan Keterbacaan | Outlook atau alat khusus | Dapat dibaca manusia (berbasis teks) |
5 | Penanganan Lampiran | Tertanam di dalam berkas | Dikodekan Base64 dalam MIME |
Sekarang mari kita jelajahi cara mengonversi MSG ke EML dan EML ke MSG menggunakan API dan pustaka sumber terbuka yang populer. Berikut adalah contoh kode menggunakan berbagai API.
Bagaimana Cara Mengonversi MSG ke EML menggunakan API .NET?
Kita dapat menggunakan pustaka sumber terbuka MsgKit dan MimeKit untuk mengonversi berkas MSG ke format berkas EML di dalam aplikasi .NET. Meskipun MsgKit sendiri tidak menawarkan ekspor .eml asli, MsgKit memudahkan pembacaan dan ekstraksi semua komponen berkas .msg, yang kemudian dapat ditulis sebagai .eml menggunakan pustaka lain yang kompatibel dengan MIME seperti MimeKit atau MailKit seperti yang ditunjukkan pada contoh kode berikut.
Bagaimana Cara Mengonversi Berkas MSG ke EML menggunakan 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);
Bagaimana cara mengonversi file EML ke MSG menggunakan 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"));
Konversi MSG ke EML melalui API Java Open Source?
Apache POI-HSMF dan JavaMail dapat digunakan untuk memuat dan mengonversi MSG Outlook ke format berkas EML. Apache POI-HSMF dapat membaca berkas MSG, dan JavaMail dapat menghasilkan berkas EML. Konversi dari EML ke MSG di Java biasanya memerlukan SDK berbayar (seperti Aspose) atau penguraian MIME manual dan penulisan biner MSG—saat ini tidak memungkinkan menggunakan pustaka Java open source murni.
Contoh kode berikut menunjukkan bagaimana Apache POI-HSMF dapat membaca berkas MSG, dan JavaMail dapat menghasilkan berkas 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");
}
}
API Komersial Terbaik untuk Konversi Berkinerja Tinggi
1. Aspose.Email (Lintas-Platform .NET/Java/Python)
Aspose.Email menawarkan solusi komersial yang andal untuk mengelola berkas email. Hanya dengan beberapa baris kode, pengembang perangkat lunak dapat memuat, memanipulasi, dan mengonversi MSG ke EML dan EML ke MSG menggunakan berbagai bahasa pemrograman seperti .NET, Java, Python, dan masih banyak lagi. Contoh berikut menunjukkan cara mengonversi b/t MSG dan EML menggunakan Aspose.Email untuk .NET API.
Bagaimana Cara Mengonversi b/t EML ke MSG menggunakan Aspose.Email untuk .NET API?
// 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);
Bagaimana cara mengonversi b/t EML ke MSG menggunakan Aspose.Email untuk 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());
Bagaimana cara mengonversi b/t EML ke MSG menggunakan Aspose.Email untuk 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. Microsoft Graph API
Pilihan komersial lain yang bagus untuk dipertimbangkan Microsoft Graph API (Berbasis Cloud)
Konversi MSG ke EML melalui Microsoft Graph API (Berbasis 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: Konverter Online (Tanpa Kode)
Jika Anda tidak ingin membuat kode, berikut adalah alat online yang sangat andal dan bermanfaat yang dengan mudah memuat dan mengonversi berkas MSG ke format EML.
Kesimpulan
Format MSG dan EML memiliki keunggulan masing-masing. MSG ideal untuk ekosistem Microsoft dengan metadata lengkap dan lampiran tertanam, sementara EML menawarkan fleksibilitas yang lebih besar karena strukturnya yang berbasis teks biasa dan MIME. Baik Anda pengembang .NET, Java, Python, atau JavaScript, tersedia alat sumber terbuka dan komersial untuk mengonversi antara format MSG dan EML. Pilih berdasarkan bahasa, skala proyek, dan kebutuhan lisensi Anda.
FAQ
T: Dapatkah saya membuka berkas MSG tanpa Outlook?
J: Ya, pustaka sumber terbuka seperti MsgReader (C#) atau extract-msg (Python) memungkinkan pembacaan berkas MSG tanpa Outlook.
T: Format mana yang lebih baik untuk pengarsipan email?
J: EML lebih baik karena standarnya yang terbuka dan formatnya yang mudah dibaca manusia.
T: Apakah ada API gratis untuk mengonversi MSG ke EML?
J: Ya, pustaka seperti MsgReader (.NET) dan extract-msg (Python) sepenuhnya gratis dan sumber terbuka.