C#'ta MHTML Dosyalarını Çeşitli Formatlara Dönüştür

MHTML dosyalarını çeşitli formatlara dönüştürmek, özellikle e-posta arşivleme, belge yönetimi ve veri alışverişiyle uğraşan birçok uygulamada ortak bir gereksinimdir. MHTML, HTML kodunu ve görseller gibi kaynaklarını tek bir dosyada birleştiren bir web arşiv formatıdır. Ancak uyumluluk ve kullanılabilirlik açısından, MHTML dosyalarının MSG, EML veya OST gibi diğer formatlara dönüştürülmesi gerekebilir. Bu makalede, Aspose.Email for .NET kullanarak bu dönüşümün nasıl yapılacağını inceleyeceğiz; .NET uygulamaları için e-posta işleme ve yönetiminde tasarlanmış güçlü ve çok yönlü bir kütüphane.

Aspose.Email for .NET, zengin özellik ve yöntem seti sayesinde dönüşüm sürecini basitleştirir. MHTML dönüşüm sürecinde yer alan ana bileşenler şunlardır:

  • MhtmlLoadOptions: Bu bileşen, MHTML dosyalarını yükleme seçeneklerini belirtir. MHTML içeriğinin nasıl yorumlanıp işleneceğini özelleştirmeye olanak tanır.
  • MailMessage: Bu sınıf bir e-posta mesajını temsil eder ve MHTML içeriğini yüklemek için bir köprü görevi görür. MHTML dosyasındaki e-posta verilerinin çıkarılmasını ve manipülasyonunu kolaylaştırır.
  • Kaydetme Seçenekleri: Hedef formata bağlı olarak, Aspose.Email for .NET EmlSaveOptions, MsgSaveOptions vb. gibi çeşitli kaydetme seçenekleri sunar. Bu seçenekler, dönüştürülen dosyanın istenen formatta kaydedilmesi için parametre ve ayarları belirler.

Dosya formatı dönüşüm yöntemleri, MHTML’den EML, MSG, PST ve diğer formatlara sorunsuz dönüşümü sağlayarak süreçleri hızlandırmak için de kullanılır.

MHTML’yi EML’ye Dönüştür

MHTML’yi EML’ye dönüştürmek, e-posta dosyalarıyla çalışırken yaygın görevlerden biridir. EML formatı, tek tek e-posta mesajlarını depolamak için yaygın olarak kullanılır ve e-posta arşivleme ve değişim için uygun bir formattır. Aşağıdaki kod parçacığı, Aspose.Email’in bir MHTML dosyasını EML formatına nasıl dönüştürebileceğini gösterir:

  1. MHTML dosyasını şu şekilde yükleyin: MailMessage.Load yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve sonraki işleme için hazırlar.
  2. Yüklenen mesajı bir EML dosyası olarak şu ile kaydedin: Kaydet metodu MailMessage sınıf. Çıktı dosya adını ve kaydetme seçeneklerini belirtin.
// Initialize and Load an existing MHTML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.mhtml");
message.Save("output.eml", SaveOptions.DefaultEml);

MHTML’yi EMLX’e Dönüştür

EMLX formatı, Apple’ın Mail uygulaması tarafından yaygın olarak kullanılır ve macOS sistemleriyle uyumluluğu sağlamak isteyen kullanıcılar için faydalıdır. Aspose.Email for .NET, MHTML dosyalarını EMLX formatına dönüştürme işlevi sunar. Aşağıdaki kod örneği, Apple Mail uygulaması ve diğer macOS tabanlı e-posta istemcileriyle uyumluluğu sağlamak için nasıl çalıştığını gösterir.

  1. MHTML dosyasını şununla yükleyin: MailMessage.Load metod.
  2. Kullan Kaydet metodu MailMessage MHTML içeriğini EMLX dosyası olarak kaydetmek için sınıf. Çıktı dosya adını ve kaydetme seçeneklerini belirtin.
// load the MHTML file to be converted
var message = MailMessage.Load("My File.mhtml");
// save MHTML as a EMLX 
message.Save("Saved File.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat)); 

MHTML’yi HTML’ye Dönüştür

MHTML dosyalarını HTML formatına dönüştürmek, e-posta içeriğini web tarayıcılarında görüntülemek veya web tabanlı uygulamalarda işlemek için genellikle gereklidir. Aspose.Email for .NET bu dönüşümü basit bir şekilde yapmanızı sağlar. Aşağıdaki kod örneği, MHTML dosyalarını Aspose.Email for .NET kullanarak HTML formatına nasıl dönüştüreceğinizi gösterir:

  1. Kullan MailMessage.Load MHTML dosyasını yüklemek için yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve sonraki işleme için hazırlar.
  2. Kullan Kaydet metodu MailMessage MHTML içeriğini HTML dosyası olarak kaydetmek için sınıf. Çıktı dosya adını ve kaydetme seçeneklerini belirtin.
// Initialize and Load an existing MHTML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.mhtml");
message.Save("output.html", SaveOptions.DefaultHtml);

Kütüphane ayrıca HTML çıktısına özel başlıklar, konu veya gövde içeriği gibi özel özellikler eklemeye veya değiştirmeye izin verir. Gerektiğinde ekleri HTML içeriğine gömebilirsiniz. E-posta içeriğinin web tarayıcıları veya e-posta istemcilerinde doğru görüntülenmesini sağlamak için HTML biçimlendirmesini özelleştirin: satıriçi stiller, dış CSS ve HTML etiketleri.

MHTML’yi ICS’ye Dönüştür

MHTML dosyalarını ICS formatına dönüştürmek, takvim etkinliklerini ve randevuları yönetmek için önemlidir. ICS formatı, takvim veri alışverişi için yaygın olarak kullanılır ve farklı takvim uygulamaları arasında birlikte çalışabilirliği sağlar. Aspose.Email for .NET bu dönüşümü sorunsuz bir şekilde gerçekleştirir. Kullan: GetAlternateViewContent MHTML dosyasından ICS içeriğini çıkarmak için yöntem. Bu yöntem, "text/calendar" formatında takvim bilgilerini alır. Aşağıdaki kod örneği, bir MHTML dosyasını Aspose.Email for .NET kullanarak ICS formatına nasıl dönüştüreceğinizi gösterir:

  1. MHTML dosyasını şu şekilde yükleyin: MailMessage.Load yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve sonraki işleme için hazırlar.
  2. ICS içeriğini şununla çıkarın: GetAlternateViewContent.
  3. ICS içeriği null değilse, File.WriteAllText kullanarak bir dosyaya kaydedin.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

var icsView = eml.GetAlternateViewContent("text/calendar");

if (icsView != null)
{
  File.WriteAllText("appointment.ics", icsView);
}

Özelleştirme Seçenekleri

Aspose.Email for .NET, MHTML’den ICS’ye dönüştürme sürecinde uygulanabilecek çeşitli özel özellikler sunar. Bu özellikler, geliştirenlere daha fazla kontrol ve esneklik sağlar; dönüşüm sürecini belirli gereksinimlere göre özelleştirmeye imkan tanır.

  • Özel Tarih ve Saat Biçimleri: İstenen çıktı formatına uyması için ICS içeriği için özel tarih ve saat biçimleri belirtebilirsiniz.

  • Saat Dilimi İşleme: Farklı saat dilimlerinde takvim etkinliklerinin doğru temsil edilmesini sağlamak için saat dilimi bilgilerini yönetin.

  • Kodlama Seçenekleri: ICS içeriğinin doğru kodlanmasını sağlamak için kodlama seçeneklerini belirtin; özel karakterlerle ilgili sorunları önler.

  • Ekleri İşleme: Gerekirse MHTML dosyasından ekleri çıkarın ve ICS içeriğine dahil edin.

  • Özel Özellikler: ICS dosyasına özel alanlar veya meta veriler gibi özel özellikler ekleyin.

Aşağıda, MHTML’den ICS’ye dönüştürürken ICS içeriğinden bir Randevu nesnesi oluşturmayı gösteren bir örnek bulunmaktadır.

// Load the MHTML file
        var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());
            
        // Extract the ICS content
        var icsView = eml.GetAlternateViewContent("text/calendar");

        if (icsView != null)
        {
            // Create a new Appointment object from the ICS content
            var appointment = Appointment.Load(new MemoryStream(Encoding.UTF8.GetBytes(icsView)));

            // Customize the ICS properties
            appointment.StartDate  = new DateTime (2024, 12, 10);
            appointment.EndDate = new DateTime (2014, 12, 11);

            // Add a custom property
            appointment.Summary = "Custom Event Summary";

            // Save the customized ICS content to a file
            var icsContent = appointment.SaveToString();
            File.WriteAllText("custom_appointment.ics", icsContent);
        }

Bu durumda özelleştirme, şunun kullanılmasıyla sağlanır: Appointment takvimi bir e-postaya temsil eden sınıf ve kapsamlı metod ve özellikleri.

MHTML’yi MBOX’a Dönüştür

MBOX formatı, e‑posta mesajı koleksiyonlarını depolamak için yaygın olarak kullanılır ve MHTML dosyalarını MBOX formatına dönüştürmek, e‑posta verilerini arşivlemek veya taşımak için özellikle faydalıdır. Aspose.Email for .NET şunu sağlar: WriteMessage metodu MboxrdStorageWriter sınıfı, bir mesajı MBOX dosyasına yazmak için kullanır. Aşağıdaki kod örneği, bu özelliklerin MHTML’den MBOX’a dönüşümde nasıl kullanılacağını gösterir:

  1. MHTML dosyasını şu şekilde yükleyin: MailMessage.Load.
  2. Şunu başlatın MboxrdStorageWriter yüklenen mesajı bir MBOX dosyasına yazmak için. Çıktı dosya adını ve mevcut bir MBOX dosyasına ekleyip eklemeyeceğinizi belirtin.
  3. Mesajı MBOX dosyasına yaz.
using (var message = MailMessage.Load("inputFile.mhtml", new MhtmlLoadOptions())){
using (var writer = new MboxrdStorageWriter("output.mbox", false)){
        writer.WriteMessage(message);
    }
}

Ek Seçenekler

  • Mevcut MBOX Dosyalarına Ekleme: Yeni bir dosya oluşturmak yerine mesajları mevcut bir MBOX dosyasına ekleyebilirsiniz. Bu, birden çok e-postayı tek bir MBOX dosyasında toplamak için faydalıdır.

  • Özel Mesaj Başlıkları: Mesajları MBOX dosyasına kaydetmeden önce özel başlıklar ekleyin veya değiştirin.

  • Ekleri İşleme: Eklerin doğru bir şekilde korunup dönüştürülen MBOX dosyasına dahil edildiğinden emin olun.

  • Kodlama Seçenekleri: Mesaj içeriğinin doğru kodlanmasını sağlamak için kodlama seçeneklerini belirtin; özellikle özel karakterler veya farklı dillerle çalışırken.

Aşağıdaki kod örneği, MHTML’yi MBOX’a dönüştürürken bu özel özelliklerden bazılarını nasıl kullanacağınızı gösterir:

// Load the MHTML file
using (var message = MailMessage.Load("inputFile.mhtml", new MhtmlLoadOptions()))
{
// Customize message headers
message.Subject = "Customized Subject";
message.Headers.Add("X-Custom-Header", "CustomHeaderValue");

// Create an MboxrdStorageWriter to append the message to an existing MBOX file
using (var writer = new MboxrdStorageWriter("output.mbox", true)) // true to append
{
// Write the message to the MBOX file
writer.WriteMessage(message);
}
}

MHTML’yi MSG’ye Dönüştür

MHTML dosyalarını MSG formatına dönüştürmek, Microsoft Outlook içinde e-posta mesajlarını yönetmeniz veya paylaşmanız gerektiğinde faydalıdır. Aspose.Email bu dönüşümü gerçekleştirir ve e-posta mesajının özgün biçimlendirmesini ve içeriğini korur. Aşağıdaki kod örneği, bir MHTML dosyasını MSG formatına nasıl dönüştüreceğinizi gösterir:

  1. MHTML dosyasını şu şekilde yükleyin: MailMessage.Load.
  2. Kullan Kaydet metodu MailMessage yüklenen mesajı MSG dosyası olarak kaydetmek için sınıf. Çıktı dosya adını belirtin ve şunu kullanın: DefaultMsgUnicode dosyanın doğru formatta kaydedilmesini sağlamak için kaydetme seçeneği.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

eml.Save("message.msg", SaveOptions.DefaultMsgUnicode);

Ek Özellikler

Aspose.Email for .NET, dönüşüm sürecinde uygulanabilecek çeşitli özel özellikler sunar; kontrol ve özelleştirme seçeneklerini artırır ve geliştiricilerin dönüşüm sürecini belirli ihtiyaçlara göre uyarlamasına olanak tanır.

  • Özel Mesaj Özellikleri: MSG dosyasına özel başlıklar, konu veya gövde içeriği gibi özelleştirilmiş özellikler ekleyin veya değiştirin.

  • Ekleri İşleme: Eklerin doğru şekilde korunup dönüştürülen MSG dosyasına dahil edildiğinden emin olun. Ayrıca yeni ekler ekleyebilir veya mevcut olanları değiştirebilirsiniz.

  • Mesaj Bayraklarını Ayarlama: Mesaj üzerinde okundu/okunmadı durumu veya önem seviyesi gibi bayraklar ayarlayın.

  • Kodlama Seçenekleri: Mesaj içeriğinin doğru kodlanmasını sağlamak için kodlama seçeneklerini belirtin; özellikle özel karakterler veya farklı dillerle çalışırken.

  • HTML Biçimlendirme: E-postanın HTML içeriğinin doğru biçimlendirilmiş ve MSG dosyasında korunmuş olmasını sağlayın.

Aşağıdaki kod örneği, MHTML’yi MSG’ye dönüştürürken bu özel özelliklerden bazılarını nasıl kullanacağınızı gösterir:

 // Load the MHTML file
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

// Customize message properties
eml.Subject = "Customized Subject";
eml.Headers.Add("X-Custom-Header", "CustomHeaderValue");

// Add an attachment
var attachment = new Attachment("path/to/attachment.txt");
eml.Attachments.Add(attachment);

// Set message flags
eml.IsRead = true; // Mark as read
eml.Priority = MailPriority.High; // Set high priority

// Save the loaded message as an MSG file with default Unicode options
eml.Save("message.msg", SaveOptions.DefaultMsgUnicode);

MHTML’yi OFT’ye Dönüştür

MHTML dosyalarını OFT formatına dönüştürmek, Microsoft Outlook için e-posta şablonları oluşturmanız gerektiğinde faydalıdır. Aspose.Email for .NET bu dönüşümü gerçekleştirmek için güçlü bir çözümdür. Aşağıdaki kod örneği, bir MHTML dosyasını OFT formatına nasıl dönüştüreceğinizi gösterir:

  1. MHTML dosyasını şu şekilde yükleyin: MailMessage.Load.
  2. Yüklenen mesajı OFT dosyası olarak kaydetmek için şunu kullanın: Kaydet metodu MailMessage sınıfı. Çıktı dosya adını belirtin ve şunu kullanın: DefaultOft dosyanın doğru formatta kaydedilmesini sağlamak için kaydetme seçeneği.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

eml.Save("message.oft", SaveOptions.DefaultOft);

Özel Özellikler

Aspose.Email for .NET, MHTML’den OFT’ye dönüşüm sürecinde uygulanabilecek, mesaj özelliklerini özelleştirme, ekleri işleme, mesaj bayraklarını ayarlama, kodlama seçenekleri ve HTML biçimlendirme gibi çeşitli özel özellikler sunar. Aşağıdaki kod örnekleri bu özelliklerin bazılarını uygulamayı göstermektedir:

eml.Subject = "Customized Subject";
eml.Headers.Add("X-Custom-Header", "CustomHeaderValue");

Bu satırlar, mesajı OFT dosyası olarak kaydetmeden önce konuyu değiştirmeyi ve özel bir başlık eklemeyi gösterir.

var attachment = new Attachment("path/to/attachment.txt");
eml.Attachments.Add(attachment);

Bu kod, e-posta mesajına yeni bir ek ekler.

eml.IsRead = true; // Mark as read
eml.Priority = MailPriority.High; // Set high priority

Bu satırlar mesajı okundu olarak işaretler ve yüksek öncelik atar.

MHTML’yi OST’ye Dönüştür

E-posta mesajlarını çevrim dışıyken Microsoft Outlook içinde depolamanız ve yönetmeniz gerekiyorsa, bunları OST (Offline Storage Table) formatına dönüştürmek faydalı olabilir. MHTML’den OST’ye dönüşüm için Aspose.Email for .NET basit bir yöntem sunar. Birkaç satır kodla mevcut bir OST dosyasını, ardından bir MHTML dosyasını yükleyebilir ve hedef klasöre ekleyebilirsiniz. Aşağıdaki kod örneği bu dönüşümün nasıl yapılacağını göstermektedir:

  1. Kullan PersonalStorage.FromFile var olan bir OST dosyasını yüklemek için yöntem.
  2. Kullan MapiMessage.Load MHTML dosyasını yüklemek için yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve bir MapiMessage nesnesine dönüştürür.
  3. OST dosyası içinde hedef klasörü (ör. "Inbox") bulun ve şunu kullanın: AddMessage dönüştürülmüş MHTML mesajını o klasöre eklemek için yöntem.
using (var ost = PersonalStorage.FromFile("storage.ost"))
{
    // Load the EML file
    var msg = MapiMessage.Load("message.mhtml", new MhtmlLoadOptions());

    // Add the EML message to the OST file
    var folderInfo = ost.RootFolder.GetSubFolder("Inbox");
    folderInfo.AddMessage(msg);
}

MHTML dosyasını OST mesajı olarak kaydetmeden önce özel başlıklar, konu veya gövde içeriği gibi özel özellikleri değiştirme veya ekleme yeteneğinin yanı sıra, Aspose.Email yeni ekler eklemeye veya mevcut ekleri değiştirmeye, okunmuş/okunmamış durumu, önem seviyesi veya takip bayrakları gibi sınıflandırma bayraklarını ayarlamaya; e-posta içeriğinin stiller, görseller ve gömülü kaynaklar dahil olmak üzere zengin HTML biçimlendirmesini korumaya; OST dosyası içinde yeni klasörler oluşturma veya mevcut klasörlerde mesajları düzenleme gibi işlemleri de sağlar.

// Load the OST file
using (var ost = PersonalStorage.FromFile("storage.ost"))
    {
    // Load the MHTML file
    var msg = MapiMessage.Load("message.mhtml", new MhtmlLoadOptions());

    // Customize message properties
    msg.Subject = "Customized Subject";
    msg.Headers.Add("X-Custom-Header", "CustomHeaderValue");

    // Add an attachment
    var attachment = new MapiAttachment("path/to/attachment.txt", "attachment.txt");
    msg.Attachments.Add(attachment);

    // Set message flags
    msg.SetMessageFlags(MapiMessageFlags.MSGFLAG_READ); // Mark as read
    msg.Importance = MapiImportance.High; // Set high importance

    // Get the target folder
    var folderInfo = ost.RootFolder.GetSubFolder("Inbox");

    // Add the customized message to the OST file
    folderInfo.AddMessage(msg);
    }

MHTML’yi PST’ye Dönüştür

MHTML dosyalarını PST (Personal Storage Table) formatına dönüştürmek, Microsoft Outlook içinde e-posta mesajlarını depolamanız ve yönetmeniz gerektiği senaryolar için faydalıdır. Aspose.Email for .NET bu dönüşümü gerçekleştirmek için dört adımlı bir çözüm sunar:

  1. Şununla yeni bir PST dosyası oluşturun: PersonalStorage.Create yöntem. Bu yöntem, belirtilen ad ve dosya formatı sürümüyle yeni bir PST dosyası başlatır.
  2. AddSubFolder yöntemi kullanarak PST dosyası içinde bir alt klasör (örn., "Inbox") oluşturun.
  3. MHTML dosyasını şu şekilde yükleyin: MapiMessage.Load yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve bir MapiMessage nesnesine dönüştürür.
  4. Mesajı PST dosyasına şu şekilde ekleyin: AddMessage dönüştürülmüş MHTML mesajını PST dosyası içinde belirtilen klasöre eklemek için yöntem.
using (var pst = PersonalStorage.Create("outputFile.pst", FileFormatVersion.Unicode))
{ 
    var inbox = pst.RootFolder.AddSubFolder("Inbox");
    var msg = MapiMessage.Load("sourceFile.mhtml", new MhtmlLoadOptions());
    inbox.AddMessage(msg);
}

MHTML dosyalarını PST formatına dönüştürürken kullanılabilecek daha fazla seçenek için bakınız MHTML’yi OST’ye Dönüştür.

MHTML’yi VCF’ye Dönüştür

E-postalardan iletişim bilgilerini çıkarmak ve kaydetmek gerektiğinde, MHTML dosyalarını VCF (vCard) formatına dönüştürmek yaygın bir çözümdür. Aspose.Email for .NET

  1. Kullan MailMessage.Load MHTML dosyasını yüklemek için yöntem. Bu yöntem, MHTML dosyasının içeriğini okur ve bir MailMessage nesnesine dönüştürür.
  2. Kullan GetAlternateViewContent media türü "text/vcard" olan alternatif görünümü bulmak için yöntem. Bu yöntem, e-posta mesajından vCard içeriğini çıkarır.
  3. vCard içeriğinin bulunup bulunmadığını kontrol edin ve bulunursa, File.WriteAllText kullanarak bir VCF dosyasına kaydedin.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

var vcfView = eml.GetAlternateViewContent("text/vcard");

if (vcfView != null)
{
    File.WriteAllText("contact.vcf", vcfView);
}

MHTML’den VCF’ye Dönüştürme İçin Özel Özellikler

  • Özel Özellik İşleme: vCard’ı kaydetmeden önce özel özellikleri değiştirin veya ekleyin. Bu, özel alanlar, ek iletişim bilgileri veya kişiselleştirilmiş verileri içerebilir.

  • Çoklu Kişi Çıkarma: MHTML dosyası birden fazla vCard girdisi içeriyorsa, birden çok kişi girdisini çıkarın ve her bir kişiyi ayrı bir VCF dosyası olarak kaydedin.

  • Kodlama Seçenekleri: İletişim bilgilerinin doğru bir şekilde kodlanmasını sağlayarak çeşitli karakter setleri ve uluslararasılaştırmayı destekleyin.

  • vCard Sürümleri: Hedef uygulamanın uyumluluk gereksinimlerine göre vCard’ı farklı sürümlerde (v2.1, v3.0, v4.0) dönüştürün ve kaydedin.

  • Gömülü Görsellerin İşlenmesi: vCard’teki kişilerle ilişkili gömülü görselleri veya fotoğrafları çıkarın ve kaydedin.

  • Kişileri Birleştirme: Birden fazla vCard girdisini tek bir VCF dosyasında birleştirerek iletişim yönetimini kolaylaştırın.

Aşağıda, MHTML’i VCF’ye dönüştürürken bu özel özelliklerden bazılarını nasıl kullanacağınızı gösteren bir örnek bulunmaktadır:

// Load the MHTML file
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());

// Find the alternate view with MediaType "text/vcard" (VCF)
var vcfView = eml.GetAlternateViewContent("text/vcard");

// If a VCF view is found, save it to a file
if (vcfView != null)
    {
    // Ensure proper encoding
    var encodedVcfView = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(vcfView));

    // Save the vCard to a file
    File.WriteAllText("contact.vcf", encodedVcfView);
    }