Last Updated: 15 Oct, 2025

E-posta dosya biçimleri ile çalışırken, iki yaygın biçimle karşılaşabilirsiniz: MSG ve EML. Her ikisi de e-posta iletilerini depolar ancak yapı, uyumluluk ve kullanım açısından farklılık gösterir. Bu blog yazısında, bunların ne olduğunu, özelliklerini ve farklılıklarını ve çeşitli API türleri ve kod örnekleri kullanarak MSG ve EML arasında nasıl dönüştürme yapılacağını inceleyeceğiz.
MSG Dosyası Nedir?
MSG dosya biçimi, Microsoft tarafından geliştirilen tescilli bir biçimdir. Microsoft Outlook’tan kaydedilen tek bir e-posta iletisi, randevu, kişi veya görevdir. Tescilli bir biçimdir, yani Outlook ekosisteminde en iyi şekilde çalışacak şekilde tasarlanmıştır. MSG dosyaları, gönderen, alıcı, tarih, konu, gövde ve ekler dahil olmak üzere bir e-postanın tüm ayrıntılarını ve ayrıca kategoriler ve işaretler gibi Outlook’a özgü özellikleri içerir.
Temel Özellikler:
- E-posta içeriğini, ekleri ve meta verileri (gönderen, alıcı, konu) depolar.
- Bileşik Dosya İkili Biçimi’ne (CFBF) dayalı ikili biçim.
- Meta verileri, e-posta gövdesini (RTF veya HTML) ve ekleri depolar.
- Öncelikle Windows ortamlarında kullanılır.
EML Dosyası Nedir?
EML dosya biçimi, RFC 5322‘de tanımlanan açık bir standarttır ve Mozilla Thunderbird, Windows Mail, Outlook Express ve Apple Mail gibi çeşitli e-posta istemcileri tarafından kullanılan daha evrensel bir e-posta biçimidir. Düz metin biçimi olduğu için daha çok yönlüdür ve farklı işletim sistemleri ve cihazlarda açılabilir.
Temel Özellikler:
- Başlıkları ve MIME kodlu içeriği depolayan metin tabanlı biçim.
- HTML biçimlendirmesini, satır içi resimleri ve ekleri tamamen destekler. * Platformdan bağımsız ve insan tarafından okunabilir.
- Programatik olarak işlenmesi daha kolaydır.
MSG ve EML Arasındaki Temel Farklar
No. | Özellik | MSG Formatı | EML Formatı |
---|---|---|---|
1 | Biçim Türü | İkili (Özel) | Düz Metin (Standart) |
2 | Uyumluluk | Microsoft Outlook | Thunderbird, Apple Mail, Gmail vb. |
3 | Meta Veri Desteği | Tam (gömülü nesneler dahil) | Sınırlı (temel başlıklar ve MIME) |
4 | Okunabilirlik Gerektirir | Outlook veya özel araçlar | İnsan tarafından okunabilir (metin tabanlı) |
5 | Ek İşleme | Dosyaya gömülü | MIME’de Base64 kodlu |
Şimdi, popüler açık kaynaklı API’ler ve kütüphaneler kullanarak MSG’yi EML’ye ve EML’yi MSG’ye nasıl dönüştürebileceğimizi inceleyelim. Aşağıda farklı API’ler kullanan kod örnekleri bulunmaktadır.
.NET API’leri kullanılarak MSG nasıl EML’ye dönüştürülür?
MSG dosyasını .NET uygulamalarında EML dosya biçimine dönüştürmek** için açık kaynaklı kütüphaneler MsgKit ve MimeKit‘i kullanabiliriz. MsgKit tek başına yerel .eml dışa aktarımı sunmasa da, bir .msg dosyasının tüm bileşenlerini okumayı ve çıkarmayı kolaylaştırır. Bu dosyalar, aşağıdaki kod örneğinde gösterildiği gibi MimeKit veya MailKit gibi diğer MIME uyumlu kütüphaneler kullanılarak .eml olarak yazılabilir.
MSG Dosyası MsgKit kullanılarak EML’ye nasıl dönüştürülür?
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);
MimeKit kullanılarak EML dosyası MSG dosyasına nasıl dönüştürülür?
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"));
MSG’yi Açık Kaynaklı Java API’leri ile EML’ye dönüştürebilir misiniz?
Apache POI-HSMF ve JavaMail, Outlook MSG’sini EML dosya biçimine yüklemek ve dönüştürmek için kullanılabilir. Apache POI-HSMF, MSG dosyalarını okuyabilir ve JavaMail, EML dosyaları oluşturabilir. Java’da EML’den MSG’ye dönüştürme genellikle ücretli SDK’lar (Aspose gibi) veya manuel MIME ayrıştırma ve MSG ikili dosyası yazma gerektirir; bu, şu anda tamamen açık kaynaklı Java kütüphaneleri kullanılarak mümkün değildir.
Aşağıdaki kod örneği, Apache POI-HSMF‘in MSG dosyalarını nasıl okuyabildiğini ve JavaMail‘in EML dosyalarını nasıl oluşturabildiğini göstermektedir.
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");
}
}
Yüksek Performanslı Dönüşüm için En İyi Ticari API’ler
1. Aspose.Email (Çapraz Platform .NET/Java/Python)
Aspose.Email, e-posta dosyalarıyla çalışmak için güçlü bir ticari çözüm sunar. Yazılım geliştiricileri, sadece birkaç satır kodla .NET, Java, Python ve daha birçok programlama dili kullanarak MSG’yi EML’ye ve EML’yi MSG’ye yükleyebilir, düzenleyebilir ve dönüştürebilir. Aşağıdaki örnek, Aspose.Email for .NET API kullanılarak b/t MSG ve EML’nin nasıl dönüştürüleceğini göstermektedir.
Aspose.Email for .NET API kullanılarak b/t EML’nin MSG’ye nasıl dönüştürüleceği?
// 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);
Aspose.Email for Java API’yi kullanarak b/t EML’yi MSG’ye nasıl dönüştürebilirim?
import com.aspose.email.*; // Load the MSG file MailMessage message = MailMessage.load("input.msg"); // Save as EML message.save("output.eml", SaveOptions.getDefaultEml());
Aspose.Email for Python API kullanılarak b/t EML’den MSG’ye nasıl dönüştürülür?
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
Düşünebileceğiniz bir diğer iyi ticari seçenek Microsoft Graph API (Bulut tabanlı)
Microsoft Graph API (Bulut tabanlı) aracılığıyla MSG’yi EML’ye dönüştürün
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: Çevrimiçi Dönüştürücüler (Kod Gerektirmez)
Kod yazmak istemiyorsanız, MSG dosyalarını kolayca yükleyip EML formatına dönüştüren oldukça güvenilir ve kullanışlı bir çevrimiçi araç sunuyoruz.
Son Düşünceler
Hem MSG hem de EML formatlarının kendine özgü güçlü yanları vardır. MSG, tam meta veri ve gömülü ekleriyle Microsoft ekosistemleri için idealdir; EML ise düz metin ve MIME tabanlı yapısı sayesinde daha fazla esneklik sunar. İster .NET, ister Java, ister Python veya JavaScript geliştiricisi olun, MSG ve EML formatları arasında dönüştürme yapmak için açık kaynaklı ve ticari araçlar mevcuttur. Dilinize, proje ölçeğinize ve lisans ihtiyacınıza göre seçim yapın.
SSS
S: MSG dosyalarını Outlook olmadan açabilir miyim?
C: Evet, MsgReader (C#) veya extract-msg (Python) gibi açık kaynaklı kütüphaneler, MSG dosyalarının Outlook olmadan okunmasına olanak tanır.
S: E-posta arşivleme için hangi format daha iyidir?
C: EML, açık standardı ve okunabilir formatı nedeniyle daha iyidir.
S: MSG’yi EML’ye dönüştürmek için ücretsiz API’ler var mı?
C: Evet, MsgReader (.NET) ve extract-msg (Python) gibi kütüphaneler tamamen ücretsiz ve açık kaynaklıdır.