Konwertuj pliki MHTML na różne formaty w C#
Konwersja plików MHTML do różnych formatów jest powszechnym wymaganiem w wielu aplikacjach, szczególnie tych zajmujących się archiwizacją e‑maili, zarządzaniem dokumentami i wymianą danych. MHTML, czyli MIME HTML, to format archiwum internetowego używany do łączenia kodu HTML i jego zasobów, takich jak obrazy, w jeden plik. Jednak ze względu na kompatybilność i użyteczność, może być konieczna konwersja plików MHTML do innych formatów, takich jak MSG, EML czy OST. W tym artykule przyjrzymy się, jak to osiągnąć przy użyciu Aspose.Email dla .NET, solidnej i wszechstronnej biblioteki przeznaczonej do przetwarzania i zarządzania e‑mailami w aplikacjach .NET.
Aspose.Email dla .NET upraszcza proces konwersji dzięki bogatemu zestawowi funkcji i metod. Główne komponenty zaangażowane w proces konwersji MHTML obejmują:
- MhtmlLoadOptions: Ten komponent określa opcje wczytywania plików MHTML. Pozwala na dostosowanie sposobu interpretacji i przetwarzania treści MHTML.
- MailMessage: Ta klasa reprezentuje wiadomość e‑mail i służy jako pomost do wczytywania treści MHTML. Umożliwia wyodrębnianie i manipulację danymi e‑mail zawartymi w pliku MHTML.
- Opcje zapisu: W zależności od docelowego formatu, Aspose.Email dla .NET udostępnia różne opcje zapisu, takie jak EmlSaveOptions, MsgSaveOptions itp. Opcje te określają parametry i ustawienia zapisu przekonwertowanego pliku w żądanym formacie.
Metody konwersji formatów plików są również używane do usprawnienia procesu konwersji, umożliwiając płynną transformację z MHTML do formatów takich jak EML, MSG, PST i inne.
Konwertuj MHTML do EML
Konwersja MHTML do EML jest jednym z typowych zadań przy pracy z plikami e‑mail. Format EML jest szeroko stosowany do przechowywania pojedynczych wiadomości e‑mail, co czyni go odpowiednim formatem do archiwizacji i wymiany wiadomości. Poniższy fragment kodu pokaże, jak używać Aspose.Email do konwersji pliku MHTML na format EML:
- Wczytaj plik MHTML przy użyciu MailMessage.Load metoda. Ta metoda odczytuje zawartość pliku MHTML i przygotowuje ją do dalszego przetwarzania.
- Zapisz wczytaną wiadomość jako plik EML używając Zapisz metoda MailMessage klasa. Określ nazwę pliku wyjściowego oraz opcje zapisu.
// Initialize and Load an existing MHTML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.mhtml");
message.Save("output.eml", SaveOptions.DefaultEml);
Konwertuj MHTML do EMLX
Format EMLX jest powszechnie używany przez aplikację Mail firmy Apple i jest korzystny dla użytkowników, którzy potrzebują zapewnić kompatybilność z systemami macOS. Aspose.Email dla .NET udostępnia funkcjonalność konwersji plików MHTML do formatu EMLX. Poniższy przykład kodu demonstruje jego działanie, zapewniając kompatybilność z aplikacją Mail firmy Apple oraz innymi klientami poczty opartymi na macOS.
- Wczytaj plik MHTML przy użyciu MailMessage.Load metoda.
- Użyj Zapisz metoda MailMessage klasa do zapisu treści MHTML jako plik EMLX. Określ nazwę pliku wyjściowego i opcje zapisu.
// 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));
Konwertuj MHTML do HTML
Konwersja plików MHTML do formatu HTML jest często potrzebna do wyświetlania treści e‑mail w przeglądarkach internetowych lub do dalszego przetwarzania w aplikacjach webowych. Aspose.Email dla .NET zapewnia prosty sposób wykonania tej konwersji. Poniższy przykład kodu pokazuje, jak przekonwertować pliki MHTML do formatu HTML przy użyciu Aspose.Email dla .NET:
- Użyj MailMessage.Load metoda wczytująca plik MHTML. Ta metoda odczytuje zawartość pliku MHTML i przygotowuje ją do dalszego przetwarzania.
- Użyj Zapisz metoda MailMessage klasa do zapisu treści MHTML jako plik HTML. Określ nazwę pliku wyjściowego oraz opcje zapisu.
// Initialize and Load an existing MHTML file by specifying the MessageFormat
var message = MailMessage.Load("myMessage.mhtml");
message.Save("output.html", SaveOptions.DefaultHtml);
Biblioteka umożliwia również modyfikację lub dodawanie własnych właściwości do wyjścia HTML, takich jak własne nagłówki, temat lub treść wiadomości. Możesz również osadzać załączniki w treści HTML, jeśli jest to potrzebne. Aby zapewnić prawidłowe wyświetlanie treści e‑mail w przeglądarkach internetowych lub klientach poczty, dostosuj formatowanie HTML: style inline, zewnętrzne CSS i tagi HTML.
Konwertuj MHTML do ICS
Konwersja plików MHTML do formatu ICS jest niezbędna do zarządzania wydarzeniami kalendarza i spotkaniami. Format ICS jest szeroko stosowany do wymiany danych kalendarza, umożliwiając interoperacyjność między różnymi aplikacjami kalendarzowymi. Aspose.Email dla .NET zapewnia płynny sposób wykonania tej konwersji. Użyj GetAlternateViewContent metoda wyodrębniająca treść ICS z pliku MHTML. Ta metoda pobiera informacje kalendarza w formacie "text/calendar". Poniższy przykład kodu demonstruje, jak przekonwertować plik MHTML do formatu ICS przy użyciu Aspose.Email dla .NET:
- Wczytaj plik MHTML przy użyciu MailMessage.Load metoda. Ta metoda odczytuje zawartość pliku MHTML i przygotowuje ją do dalszego przetwarzania.
- Wyodrębnij treść ICS przy użyciu GetAlternateViewContent.
- Jeśli treść ICS nie jest pusta, zapisz ją do pliku przy użyciu File.WriteAllText.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());
var icsView = eml.GetAlternateViewContent("text/calendar");
if (icsView != null)
{
File.WriteAllText("appointment.ics", icsView);
}
Opcje dostosowania
Aspose.Email dla .NET udostępnia kilka specjalnych funkcji, które można zastosować w procesie konwersji MHTML do ICS. Funkcje te zapewniają zwiększoną kontrolę i elastyczność, umożliwiając programistom dostosowanie procesu konwersji do konkretnych wymagań.
-
Własne formaty daty i czasu: Możesz określić własne formaty daty i czasu dla treści ICS, aby dopasować je do żądanego formatu wyjściowego.
-
Obsługa stref czasowych: Zarządzaj informacjami o strefach czasowych, aby zapewnić dokładne przedstawienie wydarzeń kalendarza w różnych strefach.
-
Opcje kodowania: Określ opcje kodowania, aby zapewnić prawidłowe kodowanie treści ICS, zapobiegając problemom ze znakami specjalnymi.
-
Obsługa załączników: Wyodrębnij i dołącz załączniki z pliku MHTML do treści ICS, jeśli to konieczne.
-
Własne właściwości: Dodaj własne właściwości do pliku ICS, takie jak własne pola lub metadane.
Poniżej znajduje się przykład demonstrujący, jak utworzyć obiekt Appointment z treści ICS przy konwersji MHTML do ICS.
// 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);
}
Dostosowanie, w tym przypadku, osiąga się przy użyciu Appointment klasa reprezentująca kalendarz w e‑mailu oraz jej rozbudowane metody i właściwości.
Konwertuj MHTML do MBOX
Format MBOX jest powszechnie używany do przechowywania zbiorów wiadomości e‑mail, a konwersja plików MHTML do formatu MBOX może być szczególnie przydatna do archiwizacji lub migracji danych e‑mail. Aspose.Email dla .NET zapewnia WriteMessage metoda MboxrdStorageWriter klasy do zapisu wiadomości do pliku MBOX. Poniższy przykład kodu pokazuje, jak wykorzystać te funkcje w konwersji MHTML do MBOX:
- Wczytaj plik MHTML przy użyciu MailMessage.Load.
- Zainicjuj MboxrdStorageWriter aby zapisać wczytaną wiadomość do pliku MBOX. Określ nazwę pliku wyjściowego i czy dołączyć do istniejącego pliku MBOX.
- Zapisz wiadomość do pliku MBOX.
using (var message = MailMessage.Load("inputFile.mhtml", new MhtmlLoadOptions())){
using (var writer = new MboxrdStorageWriter("output.mbox", false)){
writer.WriteMessage(message);
}
}
Dodatkowe opcje
-
Dołączanie do istniejących plików MBOX: Możesz dołączać wiadomości do istniejącego pliku MBOX zamiast tworzyć nowy. Jest to przydatne do utrzymania jednego pliku MBOX, który konsoliduje wiele e‑maili.
-
Własne nagłówki wiadomości: Modyfikuj lub dodawaj własne nagłówki do wiadomości przed zapisaniem ich do pliku MBOX.
-
Obsługa załączników: Upewnij się, że załączniki są prawidłowo zachowane i dołączone w przekonwertowanym pliku MBOX.
-
Opcje kodowania: Określ opcje kodowania, aby zapewnić prawidłowe kodowanie treści wiadomości, szczególnie przy obsłudze znaków specjalnych lub różnych języków.
Poniższy przykład kodu demonstruje, jak używać niektórych z tych specjalnych funkcji przy konwersji MHTML do MBOX:
// 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);
}
}
Konwertuj MHTML do MSG
Konwersja plików MHTML do formatu MSG jest przydatna w scenariuszach, w których trzeba zarządzać lub udostępniać wiadomości e‑mail w programie Microsoft Outlook. Aspose.Email umożliwia tę konwersję, zapewniając zachowanie pierwotnego formatowania i treści wiadomości. Poniższy przykład kodu demonstruje, jak przekonwertować plik MHTML do formatu MSG przy użyciu Aspose.Email dla .NET:
- Wczytaj plik MHTML przy użyciu MailMessage.Load.
- Użyj Zapisz metoda MailMessage klasa do zapisu wczytanej wiadomości jako plik MSG. Określ nazwę pliku wyjściowego i użyj DefaultMsgUnicode opcja zapisu, aby zapewnić, że plik jest zapisywany w prawidłowym formacie.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());
eml.Save("message.msg", SaveOptions.DefaultMsgUnicode);
Dodatkowe funkcje
Aspose.Email dla .NET oferuje kilka specjalnych funkcji, które można wdrożyć w procesie konwersji, zwiększając kontrolę i możliwości dostosowywania oraz umożliwiając programistom dostosowanie procesu konwersji do konkretnych potrzeb.
-
Własne właściwości wiadomości: Modyfikuj lub dodawaj własne właściwości do pliku MSG, takie jak własne nagłówki, temat lub treść wiadomości.
-
Obsługa załączników: Upewnij się, że załączniki są prawidłowo zachowane i dołączone w przekonwertowanym pliku MSG. Możesz także dodać nowe załączniki lub zmodyfikować istniejące.
-
Ustawianie flag wiadomości: Ustaw flagi w wiadomości, takie jak status przeczytany/nieprzeczytany lub poziom ważności.
-
Opcje kodowania: Określ opcje kodowania, aby zapewnić prawidłowe kodowanie treści wiadomości, szczególnie przy obsłudze znaków specjalnych lub różnych języków.
-
Formatowanie HTML: Upewnij się, że zawartość HTML wiadomości jest poprawnie sformatowana i zachowana w pliku MSG.
Poniższy przykład kodu demonstruje, jak używać niektórych z tych specjalnych funkcji przy konwersji MHTML do MSG:
// 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);
Konwertuj MHTML do OFT
Konwersja plików MHTML do formatu OFT jest przydatna w scenariuszach, w których trzeba tworzyć szablony e‑mail dla Microsoft Outlook. Aspose.Email dla .NET to solidne rozwiązanie umożliwiające tę konwersję. Poniższy przykład kodu pokazuje, jak przekonwertować plik MHTML do formatu OFT przy użyciu Aspose.Email dla .NET:
- Wczytaj plik MHTML przy użyciu MailMessage.Load.
- Zapisz wczytaną wiadomość jako plik OFT przy użyciu Zapisz metoda MailMessage klasa. Określ nazwę pliku wyjściowego i użyj DefaultOft opcja zapisu, aby zapewnić, że plik jest zapisywany w prawidłowym formacie.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());
eml.Save("message.oft", SaveOptions.DefaultOft);
Specjalne funkcje
Aspose.Email dla .NET oferuje kilka specjalnych funkcji, które można wdrożyć w procesie konwersji MHTML do OFT, takich jak dostosowywanie właściwości wiadomości, obsługa załączników, ustawianie flag wiadomości, opcje kodowania i formatowanie HTML. Poniższe przykłady kodu demonstrują implementację niektórych z tych funkcji:
eml.Subject = "Customized Subject";
eml.Headers.Add("X-Custom-Header", "CustomHeaderValue");
Te linijki pokazują, jak zmodyfikować temat i dodać własny nagłówek do wiadomości przed zapisaniem jej jako plik OFT.
var attachment = new Attachment("path/to/attachment.txt");
eml.Attachments.Add(attachment);
Ten kod dodaje nowy załącznik do wiadomości e‑mail.
eml.IsRead = true; // Mark as read
eml.Priority = MailPriority.High; // Set high priority
Te linijki ustawiają wiadomość jako przeczytaną i nadają jej wysoką priorytet.
Konwertuj MHTML do OST
Jeśli potrzebujesz przechowywać i zarządzać wiadomościami e‑mail w programie Microsoft Outlook w trybie offline, konwersja do formatu OST (Offline Storage Table) może być przydatna. Do konwersji MHTML na OST Aspose.Email dla .NET udostępnia prostą metodę. W kilku linijkach kodu możesz wczytać istniejący plik OST, następnie plik MHTML i dodać go do docelowego folderu. Poniższy przykład kodu pokazuje, jak wykonać tę konwersję:
- Użyj PersonalStorage.FromFile metoda do wczytania istniejącego pliku OST.
- Użyj MapiMessage.Load metoda do wczytania pliku MHTML. Ta metoda odczytuje zawartość pliku MHTML i konwertuje ją na obiekt MapiMessage.
- Zlokalizuj docelowy folder w pliku OST (np. "Inbox") i użyj AddMessage metoda dodająca przekonwertowaną wiadomość MHTML do tego folderu.
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);
}
Oprócz możliwości modyfikacji lub dodawania własnych właściwości, takich jak własne nagłówki, temat lub treść ciała, do pliku MHTML przed zapisaniem go jako wiadomości OST, Aspose.Email umożliwia także dodawanie nowych załączników lub modyfikowanie istniejących, ustawianie flag klasyfikacji, takich jak status przeczytany/nieprzeczytany, poziom ważności lub flagi śledzenia; zachowanie bogatego formatowania HTML treści e‑mail, w tym style, obrazy i osadzone zasoby; tworzenie nowych folderów lub organizowanie wiadomości w istniejących folderach w pliku OST w celu utrzymania uporządkowanej struktury.
// 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);
}
Konwertuj MHTML do PST
Konwersja plików MHTML do formatu PST (Personal Storage Table) jest przydatna w scenariuszach, w których trzeba przechowywać i zarządzać wiadomościami e‑mail w programie Microsoft Outlook. Aspose.Email dla .NET oferuje czteroetapowe rozwiązanie tej konwersji:
- Utwórz nowy plik PST przy użyciu PersonalStorage.Create metoda. Ta metoda inicjalizuje nowy plik PST o podanej nazwie i wersji formatu pliku.
- Utwórz podfolder w pliku PST (np. "Inbox") przy użyciu metody AddSubFolder.
- Wczytaj plik MHTML przy użyciu MapiMessage.Load metoda. Ta metoda odczytuje zawartość pliku MHTML i konwertuje ją na obiekt MapiMessage.
- Dodaj wiadomość do pliku PST przy użyciu AddMessage metoda dodająca przekonwertowaną wiadomość MHTML do określonego folderu w pliku PST.
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);
}
Aby zobaczyć więcej opcji używanych przy konwersji plików MHTML do formatu PST, zobacz Konwertuj MHTML do OST.
Konwertuj MHTML do VCF
Konwersja plików MHTML do formatu VCF (vCard) to powszechne rozwiązanie, gdy trzeba wyodrębnić i zapisać informacje kontaktowe z e‑maili. Aspose.Email dla .NET
- Użyj MailMessage.Load metoda do wczytania pliku MHTML. Ta metoda odczytuje zawartość pliku MHTML i konwertuje ją na obiekt MailMessage.
- Użyj GetAlternateViewContent metoda do znalezienia alternatywnego widoku o typie mediów "text/vcard". Ta metoda wyodrębnia zawartość vCard z wiadomości e-mail.
- Sprawdź, czy zawartość vCard została znaleziona, a jeśli tak, zapisz ją do pliku VCF przy użyciu File.WriteAllText.
var eml = MailMessage.Load("message.mhtml", new MhtmlLoadOptions());
var vcfView = eml.GetAlternateViewContent("text/vcard");
if (vcfView != null)
{
File.WriteAllText("contact.vcf", vcfView);
}
Specjalne funkcje konwersji MHTML do VCF
-
Obsługa własnych właściwości: Modyfikuj lub dodaj własne właściwości do vCard przed jej zapisaniem. Może to obejmować własne pola, dodatkowe informacje kontaktowe lub spersonalizowane dane.
-
Wielokrotne wyodrębnianie kontaktów: Wyodrębnij wiele wpisów kontaktów, jeśli plik MHTML zawiera kilka wpisów vCard, i zapisz każdy kontakt jako oddzielny plik VCF.
-
Opcje kodowania: Zapewnij właściwe kodowanie informacji kontaktowych, aby obsługiwać różne zestawy znaków i internacjonalizację.
-
Wersje vCard: Konwertuj i zapisz vCard w różnych wersjach (v2.1, v3.0, v4.0) w zależności od wymagań kompatybilności aplikacji docelowej.
-
Obsługa osadzonych obrazów: Wyodrębnij i zapisz osadzone obrazy lub zdjęcia powiązane z kontaktami w vCard.
-
Scalanie kontaktów: Połącz wiele wpisów vCard w jeden plik VCF, aby uprościć zarządzanie kontaktami.
Poniżej znajduje się przykład demonstrujący, jak używać niektórych z tych specjalnych funkcji podczas konwertowania MHTML do VCF:
// 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);
}