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.

  1. Zainicjuj instancję EmlLoadOptions.
  2. Skonfiguruj opcje wczytywania w razie potrzeby.
  3. 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.

  1. Utwórz instancję EmlxLoadOptions.
  2. Skonfiguruj właściwości w razie potrzeby.
  3. 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

Ł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.

  1. Zainicjuj instancję HtmlLoadOptions.
  2. Skonfiguruj niezbędne właściwości.
  3. 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

Ł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.

  1. Utwórz instancję MhtmlLoadOptions.
  2. Skonfiguruj żądane właściwości.
  3. 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.

  1. Utwórz instancję MsgLoadOptions.
  2. Ustaw żądane właściwości, aby dostosować ładowanie.
  3. 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 jest false.
  • 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.

  1. Utwórz instancję TnefLoadOptions.
  2. Skonfiguruj właściwości w razie potrzeby.
  3. 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.

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.

  1. Utwórz instancję MapiConversionOptions i skonfiguruj jego właściwości.
  2. Konwertuj MailMessage obiekt do MapiMessage obiekt 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 MapiConversionOptions skonfigurowany z OutlookMessageFormat jako ASCII, z PreserveSignature ustaw na false i UseBodyCompression ustaw na false. Ta opcja jest przydatna, gdy potrzebna jest konwersja do prostego formatu ASCII.

  • UnicodeFormat: Zwraca MapiConversionOptions z OutlookMessageFormat ustaw na Unicode, i oba PreserveSignature i UseBodyCompression ustaw 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.ASCII lub OutlookMessageFormat.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.