Wczytywanie i zapisywanie wiadomości e‑mail
Wczytaj wiadomość e‑mail
Wczytaj z EML
Ta sekcja opisuje, jak wczytać plik EML do obiektu MailMessage przy użyciu EmlLoadOptions klasa. Klasa EmlLoadOptions zapewnia różne opcje dostosowywania sposobu wczytywania pliku EML, takie jak zachowanie formatów wbudowanych wiadomości lub kontrolowanie zachowania wczytywania załączników TNEF.
- Zainicjuj instancję EmlLoadOptions.
- Skonfiguruj opcje wczytywania w razie potrzeby.
- Użyj MailMessage.Load() metoda do wczytania pliku EML z podanymi opcjami.
using Aspose.Email;
// Initialize EmlLoadOptions
var loadOptions = new EmlLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Sets preferred encoding for the message
PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
PreserveTnefAttachments = true, // Control TNEF attachment loading
RemoveSignature = false // Do not remove the signature
};
// Load the EML file
var eml = MailMessage.Load("file.eml", loadOptions);
Właściwości EmlLoadOptions
- PreferredTextEncoding: Ustawia preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Wskazuje, czy zachować format wbudowanych wiadomości podczas wczytywania. Domyślnie jest
false. - PreserveTnefAttachments: Kontroluje zachowanie wczytywania załączników TNEF. Domyślnie jest
false. - RemoveSignature: Określa, czy podpis powinien być usunięty podczas wczytywania. Domyślnie jest
false.
Zachowaj format wbudowanej wiadomości
Ładuj wiadomość z podpisem/bez podpisu
Zachowywanie podpisu jest domyślnie wspierane podczas ładowania plików EML. Aby usunąć podpis, możesz ustawić LoadOptions.RemoveSignature ustaw właściwość na true.
Poniższy przykład kodu pokazuje, jak usunąć podpis podczas ładowania wiadomości:
var msg = MailMessage.Load(fileName, new EmlLoadOptions() { RemoveSignature = true});
Ładuj z EMLX
Poniższa sekcja opisuje ładowanie pliku EMLX przy użyciu EmlxLoadOptions klasa. Ta klasa zapewnia opcje podobne do EmlLoadOptions, oferując kontrolę nad kodowaniem, usuwaniem podpisu i innymi.
- Utwórz instancję EmlxLoadOptions.
- Skonfiguruj właściwości w razie potrzeby.
- Użyj MailMessage.Load() metoda do ładowania pliku EMLX.
using Aspose.Email;
// Instantiate EmlxLoadOptions
var loadOptions = new EmlxLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
RemoveSignature = true // Remove signatures during loading
};
// Load the EMLX file
var emlx = MailMessage.Load("file.emlx", loadOptions);
Właściwości EmlxLoadOptions
- PreferredTextEncoding: Ustawia preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Wskazuje, czy zachować format wbudowanych wiadomości. Domyślnie jest
false. - RemoveSignature: Określa, czy usunąć podpis podczas wczytywania. Domyślnie jest
false.
Ładuj z HTML
Dowiedz się, jak załadować plik HTML do MailMessage przy użyciu HtmlLoadOptions klasa. Ta klasa jest specjalnie zaprojektowana do obsługi treści HTML z opcjami zarządzania zasobami i dodawania widoków czystego tekstu.
- Zainicjuj instancję HtmlLoadOptions.
- Skonfiguruj niezbędne właściwości.
- Użyj MailMessage.Load() metoda do ładowania pliku HTML z określonymi opcjami.
using Aspose.Email;
// Initialize HtmlLoadOptions
var loadOptions = new HtmlLoadOptions
{
// Configure load options
PathToResources = "resources/", // Path to directory containing resource files
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
ShouldAddPlainTextView = true // Add plain text view of the body
};
// Load the HTML file
var html = MailMessage.Load("file.html", loadOptions);
Właściwości HtmlLoadOptions
- PathToResources: Definiuje ścieżkę do katalogu zawierającego pliki zasobów (np. obrazy).
- PreferredTextEncoding: Ustawia preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Określa, czy zachować format osadzonych wiadomości. Domyślnie jest
false. - ShouldAddPlainTextView: Określa, czy dodać widok czystego tekstu ciała wiadomości. Domyślnie jest
false.
Ładuj z MHTML
Ta sekcja wyjaśnia, jak załadować plik MHTML przy użyciu MhtmlLoadOptions klasa. Klasa MhtmlLoadOptions oferuje opcje zarządzania kodowaniem, zachowywania formatów osadzonych wiadomości oraz obsługi załączników TNEF.
- Utwórz instancję MhtmlLoadOptions.
- Skonfiguruj żądane właściwości.
- Wczytaj plik MHTML przy użyciu MailMessage.Load() metoda.
using Aspose.Email;
// Create MhtmlLoadOptions
var loadOptions = new MhtmlLoadOptions
{
// Set load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
PreserveTnefAttachments = true, // Handle TNEF attachments
RemoveSignature = false // Keep the signature
};
// Load the MHTML file
var mhtml = MailMessage.Load("file.mht", loadOptions);
Właściwości MhtmlLoadOptions
- MessageFormat: Reprezentuje format wiadomości e‑mail, który może być EML, MSG lub MHTML. Domyślnie jest EML.
- PreferredTextEncoding: Ustawia preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Określa, czy zachować format osadzonych wiadomości. Domyślnie jest
false. - PreserveTnefAttachments: Kontroluje zachowanie wczytywania załączników TNEF. Domyślnie jest
false. - RemoveSignature: Określa, czy usunąć podpis podczas wczytywania. Domyślnie jest
false.
Ładuj z MSG
Ta sekcja wyjaśnia, jak załadować plik MSG do obiektu MailMessage przy użyciu MsgLoadOptions klasa. Klasa MsgLoadOptions oferuje różne właściwości, które określają sposób ładowania plików MSG, w tym opcje zachowywania treści RTF lub zarządzania załącznikami TNEF.
- Utwórz instancję MsgLoadOptions.
- Ustaw żądane właściwości, aby dostosować ładowanie.
- Załaduj plik MSG przy użyciu MailMessage.Load() metoda.
using Aspose.Email;
// Create MsgLoadOptions
var loadOptions = new MsgLoadOptions
{
// Set load options
KeepOriginalEmailAddresses = true, // Preserve original email addresses
PreferredTextEncoding = Encoding.UTF8, // Set preferred encoding
PreserveRtfContent = true, // Keep RTF content in the message
PreserveTnefAttachments = true, // Handle TNEF attachments
RemoveSignature = false, // Keep the signature
Timeout = 5000 // Set timeout to 5 seconds
};
// Load the MSG file
var msg = MailMessage.Load("file.msg", loadOptions);
Właściwości MsgLoadOptions
- KeepOriginalEmailAddresses: Wskazuje, czy zachować oryginalne adresy e‑mail. Domyślnie jest
false. - PreferredTextEncoding: Definiuje preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Określa, czy format osadzonych wiadomości powinien być zachowany. Domyślnie jest
false. - PreserveRtfContent: Określa, czy zachować treść ciała RTF w
MailMessage. Domyślnie jestfalse. - PreserveTnefAttachments: Zarządza zachowaniem ładowania załączników TNEF. Domyślnie jest
false. - RemoveSignature: Decyduje, czy usunąć podpis podczas ładowania. Domyślnie jest
false. - Limit czasu: Ogranicza czas formatowania w milisekundach podczas konwersji. Domyślnie 3000 ms.
Wczytaj z TNEF
Dowiedz się, jak załadować plik TNEF eml przy użyciu TnefLoadOptions klasa. Ta klasa zapewnia opcje zarządzania kodowaniem i usuwania podpisów podczas procesu wczytywania.
- Utwórz instancję TnefLoadOptions.
- Skonfiguruj właściwości w razie potrzeby.
- Użyj MailMessage.Load() metoda do wczytania pliku TNEF.
using Aspose.Email;
// Instantiate TnefLoadOptions
var loadOptions = new TnefLoadOptions
{
// Configure load options
PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
RemoveSignature = true // Remove signatures during loading
};
// Load the TNEF file
var tnef = MailMessage.Load("file.eml", loadOptions);
Właściwości TnefLoadOptions
- MessageFormat: Reprezentuje format wiadomości e‑mail, np. EML, MSG lub MHTML. Domyślnie jest EML.
- PreferredTextEncoding: Ustawia preferowane kodowanie tematu i treści wiadomości. Domyślnie jest
null. - PreserveEmbeddedMessageFormat: Wskazuje, czy zachować format wbudowanych wiadomości. Domyślnie jest
false. - RemoveSignature: Określa, czy usunąć podpis podczas wczytywania. Domyślnie jest
false.
Wykrywanie formatów plików
API Aspose.Email zapewnia możliwość wykrywania formatu pliku przekazanej wiadomości. Ta DetectFileFormat metoda FileFormatUtil klasa może być użyta do tego celu. Poniższe klasy i metody mogą być użyte do wykrywania załadowanego formatu pliku.
- FileFormatType Klasa
- FileFormatInfo Klasa
- FileFormatUtil Klasa
- FileFormatUtil.DetectFileFormat(Stream) Method
- FileFormatUtil.DetectFileFormat(String) Method
Poniższy fragment kodu pokazuje, jak wykrywać formaty plików.
Zapisz i konwertuj wiadomości
Aspose.Email ułatwia konwertowanie dowolnego typu wiadomości na inny format. Aby zademonstrować tę funkcję, kod w tym artykule ładuje trzy typy wiadomości z dysku i zapisuje je ponownie w innych formatach. Klasa bazowa SaveOptions oraz klasy EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions dla dodatkowych ustawień przy zapisywaniu MailMessage może być użyte do zapisywania wiadomości w innych formatach. Artykuł pokazuje, jak używać tych klas do zapisania przykładowej wiadomości e‑mail jako:
- format EML.
- Outlook MSG.
- format MHTML.
- format HTML.
Zapisz jako EML
Poniższy fragment kodu pokazuje, jak załadować wiadomość EML i zapisać ją na dysku w tym samym formacie.
Zachowaj oryginalne granice
Poniższy fragment kodu pokazuje, jak załadować EML i zapisać jako EML, zachowując oryginalne granice.
Zachowaj załączniki TNEF
Poniższy fragment kodu pokazuje, jak zapisać jako EML, zachowując załączniki TNEF.
Zapisz EML jako MSG
Poniższy fragment kodu pokazuje, jak wczytać wiadomość EML i przekonwertować ją na MSG, używając odpowiedniej opcji z SaveOptions.
Zachowaj daty
Ten MsgSaveOptions klasa pozwala zapisać wiadomość źródłową jako plik Outlook Message (MSG) zachowując daty. Poniższy fragment kodu pokazuje, jak zapisać jako MSG z zachowanymi datami.
Zapisz EML jako MHTML
Różne opcje MHTML mogą być użyte do uzyskania pożądanych rezultatów. Poniższy fragment kodu pokazuje, jak załadować wiadomość EML do MailMessage i konwertuj ją na MHTML z datą wiadomości w systemie UTC.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.DefaultMhtml;
saveOptions.PreserveOriginalDate = false; // save a message date as UTC date
// Initialize and load an existing EML file
using (MailMessage mailMessage = MailMessage.Load(folderPath + "Message.eml"))
{
mailMessage.Save(folderPath + "Message_out.mhtml", saveOptions);
}
Opcje konwersji
Ten MhtSaveOptions klasa zapewnia dodatkowe opcje zapisywania wiadomości e‑mail w formacie MHTML. Enumerator MhtFormatOptions umożliwia zapis dodatkowych informacji e‑mail do wyjściowego MHTML. Można zapisać następujące dodatkowe pola:
WriteHeader– zapisuje nagłówek e‑mail do pliku wyjściowego.WriteOutlineAttachments– zapisuje załączniki konturu do pliku wyjściowego.WriteCompleteEmailAddress– zapisuje pełny adres e‑mail do pliku wyjściowego.NoEncodeCharacters– nie należy używać kodowania transferu znaków.HideExtraPrintHeader– ukrywa dodatkowy nagłówek wydruku u góry pliku wyjściowego.WriteCompleteToEmailAddress– zapisuje pełny adres e‑mail odbiorcy do pliku wyjściowego.WriteCompleteFromEmailAddress– zapisuje pełny adres e‑mail nadawcy do pliku wyjściowego.WriteCompleteCcEmailAddress– zapisuje pełne adresy e‑mail wszystkich odbiorców z kopią (CC) do pliku wyjściowego.WriteCompleteBccEmailAddress– zapisuje pełny adres e‑mail każdego odbiorcy z ukrytymi odbiorcami (BCC) do pliku wyjściowego.RenderCalendarEvent– zapisuje tekst z wydarzenia kalendarza do pliku wyjściowego.SkipByteOrderMarkInBody– zapisuje bajty BOM (Byte Order Mark) do pliku wyjściowego.RenderVCardInfo– zapisuje tekst z VCard AlternativeView do pliku wyjściowego.DisplayAsOutlook– wyświetla nagłówek From.RenderTaskFields– zapisuje określone pola Zadania do pliku wyjściowego.None– Nie określono ustawienia.
Poniższy fragment kodu pokazuje, jak konwertować pliki EML do MHTML z opcjonalnymi ustawieniami.
Renderuj wydarzenia kalendarza
Ten MhtFormatOptions.RenderCalendarEvent renderuje wydarzenia kalendarza do wyjściowego MHTML. Poniższy fragment kodu pokazuje, jak renderować wydarzenia kalendarza podczas konwersji do MHTML.
Eksport e‑maila do MHT bez obrazów w treści
Eksportowanie e‑maila do MHT z niestandardową strefą czasową
MailMessage klasa udostępnia TimeZoneOffset właściwość służąca do ustawiania niestandardowej strefy czasowej podczas eksportu do MHT. Poniższy fragment kodu pokazuje, jak wyeksportować wiadomość e‑mail do MHT z niestandardową strefą czasową.
Dopasowanie czcionki
Zapisz EML jako HTML
Ten HtmlSaveOptions klasa umożliwia eksportowanie treści wiadomości do HTML. Poniższy fragment kodu pokazuje, jak zapisać wiadomość jako HTML.
Zapisz bez zasobów osadzonych
Zapisz EML jako OFT
Poniższy fragment kodu pokazuje, jak zapisać wiadomość jako szablon Outlook (.oft).
Konwertuj EML do MSG (MailMessage do MapiMessage)
Aby przekonwertować MailMessage obiekt wczytany z pliku EML do MapiMessage obiekt, użyj MapiConversionOptions klasa. Ta konwersja jest często konieczna, ponieważ te dwa obiekty służą różnym celom i zaspokajają odrębne potrzeby w przetwarzaniu e‑maili. MapiMessage jest specjalnie zaprojektowany pod kątem kompatybilności z Microsoft Outlook i Exchange Server, ponieważ stosuje się do formatu Messaging Application Programming Interface (MAPI). To zapewnia, że e‑maile przekonwertowane do plików MSG są w pełni kompatybilne z produktami Microsoft, umożliwiając ich otwieranie, modyfikowanie i zarządzanie bezpośrednio w Outlooku.
Ta konwersja jest również konieczna, gdy e‑maile muszą być archiwizowane, indeksowane lub przetwarzane przez magazyny wymagające formatu MAPI, na przykład magazyny PST/OST, OLM. The MapiConversionOptions klasa pozwala określić dodatkowe opcje, takie jak zachowanie oryginalnego formatu wiadomości, zachowanie oryginalnych dat oraz kompresję ciała RTF podczas konwersji. Poniższy przykład kodu pokazuje, jak wczytać e‑mail z pliku w formacie .eml i przekonwertować go do formatu Outlook .msg, umożliwiając dostosowanie, ale zapewniając, że niektóre cechy pierwotnego e‑maila są zachowane podczas konwersji.
- Utwórz instancję
MapiConversionOptionsi skonfiguruj jego właściwości. - Konwertuj
MailMessageobiekt doMapiMessageobiekt przy użyciu skonfigurowanych opcji konwersji.
MailMessage eml = MailMessage.Load("email.eml", new EmlLoadOptions());
// Create an instance of MapiConversionOptions
var conversionOptions = new MapiConversionOptions
{
// Configure MapiConversionOptions
Format = OutlookMessageFormat.Unicode, // Use Unicode format for MSG
PreserveEmbeddedMessageFormat = true, // Preserve the format of embedded messages
PreserveOriginalAddresses = true, // Keep original email addresses
PreserveOriginalDates = true, // Preserve original dates
PreserveEmptyDates = false, // Generate new dates if original are empty
RemoveSignature = false, // Do not remove the signature
UseBodyCompression = true, // Enable RTF body compression
ForcedRtfBodyForAppointment = false // Disable forced RTF body for appointments
};
// Convert MailMessage to MapiMessage
MapiMessage msg = MapiMessage.FromMailMessage(eml, conversionOptions);
Dostępne właściwości MapiConversionOptions
-
ASCIIFormat: Zwraca
MapiConversionOptionsskonfigurowany zOutlookMessageFormatjako ASCII, zPreserveSignatureustaw na false iUseBodyCompressionustaw na false. Ta opcja jest przydatna, gdy potrzebna jest konwersja do prostego formatu ASCII. -
UnicodeFormat: Zwraca
MapiConversionOptionszOutlookMessageFormatustaw na Unicode, i obaPreserveSignatureiUseBodyCompressionustaw na false. Użyj tej opcji, aby uzyskać szersze wsparcie znaków w plikach MSG. -
ForcedRtfBodyForAppointment: Gdy ustawione na true, wymusza użycie ciała RTF dla spotkań kalendarza. Jest to przydatne, jeśli chcesz zapewnić kompatybilność z niektórymi klientami poczty. Domyślnie true.
-
Format: Określa format wyjściowy pliku MSG. Może być ustawiony na
OutlookMessageFormat.ASCIIlubOutlookMessageFormat.Unicode, kontrolując, czy konwertowany MSG powinien używać kodowania ASCII czy Unicode. -
PreserveEmbeddedMessageFormat: Określa, czy zachować oryginalny format EML osadzonych wiadomości podczas konwersji do
MapiMessage. Ustawienie tego na true zapewnia, że osadzone e‑maile zachowają swoją pierwotną strukturę. Domyślnie false. -
PreserveEmptyDates: Gdy ustawione na true, zachowuje oryginalne daty zapisu i modyfikacji z EML. W przeciwnym razie, jeśli oryginalne daty są puste, zostaną wygenerowane nowe.
-
PreserveOriginalAddresses: Jeśli ustawione na true, zachowuje oryginalne adresy e‑mail bez ich weryfikacji. Jest to przydatne, gdy adresy e‑mail mogą nie spełniać ścisłych norm, ale muszą pozostać niezmienione. Domyślnie false.
-
PreserveOriginalDates: Zapewnia, że oryginalne daty wysłania i odbioru są zachowane podczas procesu konwersji. Ustawienie na true zachowuje te daty dla lepszej dokładności historycznej.
-
RemoveSignature: Kontroluje, czy cyfrowy podpis, jeśli istnieje, zostanie usunięty z wiadomości podczas konwersji. Domyślnie false, co oznacza, że podpis zostanie zachowany, chyba że zostanie wyraźnie usunięty.
-
UseBodyCompression: Włącza kompresję ciała RTF, jeśli ustawiono na true. Może to pomóc zmniejszyć rozmiar pliku MSG, szczególnie przy dużych wiadomościach z bogatym formatowaniem.