Zarządzanie wiadomościami Outlook

Zapisz e‑maile jako HTML

Aspose.Email umożliwia zapisywanie zasobów e‑maili ze ścieżkami względnymi przy eksportowaniu wiadomości do formatu HTML. Ta funkcja zapewnia większą elastyczność w łączeniu zasobów w wygenerowanym pliku HTML, ułatwiając udostępnianie i wyświetlanie zapisanych e‑maili na różnych systemach. Aby zapisać zasoby ze ścieżkami względnymi, użyj HtmlSaveOptions.UseRelativePathToResources właściwości. Domyślna wartość właściwości to false (zasoby są zapisywane ze ścieżkami bezwzględnymi). Gdy ustawiona na true, zasoby są zapisywane ze ścieżkami względnymi.

Pliki HTML ze ścieżkami względnymi są bardziej przenośne i mogą być wyświetlane poprawnie niezależnie od struktury plików w środowisku hostującym. Można wybierać między ścieżkami bezwzględnymi i względnymi w zależności od wymagań. Można definiować niestandardowe ścieżki dla zasobów używając ResourceHtmlRendering zdarzenie.

Poniższy przykład kodu demonstruje, jak zapisać e‑mail z domyślną względną ścieżką do zasobów:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

W tym przypadku zasoby będą zapisywane w folderze [html file name]_files, w tej samej ścieżce co plik .html, a HTML będzie odwoływać się do zasobów za pomocą ścieżek względnych.

Poniższy przykład kodu demonstruje, jak zapisać z bezwzględną ścieżką do zasobów:

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = false
};

msg.Save(Path.Combine("target_files"), htmlSaveOptions);

Podobnie jak w pierwszym przypadku, zasoby będą domyślnie zapisywane w folderze [html file name]_files, ale HTML będzie odwoływać się do zasobów używając ścieżek bezwzględnych.

Używając ResourceHtmlRendering zdarzenie, możesz ustawić własne względne lub bezwzględne ścieżki do zasobów. Przy dostosowywaniu ścieżek za pomocą ResourceHtmlRendering obsługa zdarzenia, a ponieważ UseRelativePathToResources jest ustawiona na true, należy przypisać względną ścieżkę do PathToResourceFile właściwość zapewniająca poprawne odwołania.

Poniższy przykład kodu demonstruje, jak niestandardowo ustawić ścieżkę względną przy użyciu zdarzenia ResourceHtmlRendering

var msg = MapiMessage.Load(sourceFileName);

var htmlSaveOptions = new HtmlSaveOptions
{
    ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
    UseRelativePathToResources = true
};

htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
    if (o is AttachmentBase attachment)
    {
	    // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
        args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
    }
};

msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);

Konwertuj MSG na wiadomości MIME

API Aspose.Email umożliwia konwersję plików MSG do wiadomości MIME przy użyciu ToMailMessage metoda.

Ustaw limity czasu dla konwersji i ładowania wiadomości

Poniższe funkcje umożliwią ustawienie limitu czasu w milisekundach dla procesu konwersji i ładowania:

Poniższy przykład kodu pokaże, jak ustawić limit czasu podczas konwertowania wiadomości:

var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;

options.TimeoutReached += (object sender, EventArgs args) =>
{
    string subj = (sender as MailMessage).Subject;
	 // Set a flag indicating the timeout was reached
    isTimedOut = true;
};

var mailMessage = mapiMessage.ToMailMessage(options);

Konwersja MSG na EML zachowująca ciało RTF

Konwersję pliku MSG na EML zachowując ciało RTF można wykonać na dwa sposoby:

Obie właściwości pobierają lub ustawiają wartość określającą, czy zachować ciało rtf w MailMessage.

Poniższe fragmenty kodu pokazują, jak przekonwertować plik MSG na EML zachowując ciało RTF:

var loadOptions = new MsgLoadOptions
{
    PreserveRtfContent = true
};

var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
    PreserveRtfContent = true
};

var msg = MapiMessage.Load("my.msg");

var eml = msg.ToMailMessage(conversionOptions);

Obsługa plików szablonów Outlook (.OFT)

Szablony Outlook są bardzo przydatne, gdy chcesz wielokrotnie wysyłać podobne wiadomości e‑mail. Zamiast za każdym razem przygotowywać wiadomość od zera, najpierw przygotuj ją w Outlook i zapisz jako Szablon Outlook (OFT). Następnie, gdy potrzebujesz wysłać wiadomość, możesz utworzyć ją z szablonu, oszczędzając czas na pisaniu tego samego tekstu w treści lub temacie, ustawianiu formatowania itp. Aspose.Email oferuje MailMessage klasa może być użyta do załadowania i odczytania pliku szablonu Outlook (OFT). Gdy szablon Outlook zostanie załadowany w instancji MailMessage klasy, możesz zaktualizować nadawcę, odbiorcę, treść, temat i inne właściwości. Po zaktualizowaniu właściwości:

  • Wyślij e‑mail przy użyciu SmtpClient klasy lub
  • Zapisz wiadomość jako MSG i przeprowadź dalsze aktualizacje/walidację przy użyciu Microsoft Outlook.

W poniższych przykładach kodu, my:

  1. Załaduj szablon przy użyciu MailMessage klasa.
  2. Zaktualizuj niektóre właściwości.
  3. Zapisz wiadomość w formacie MSG.

Poniższy fragment kodu pokazuje, jak załadować plik OFT, zaktualizować wiadomość i zapisać ją w formacie MSG.

Zapisz pliki MSG jako szablony

Poniższy fragment kodu pokazuje, jak zapisać plik Outlook MSG jako szablon.

Określ typ wiadomości MAPI (OFT lub MSG)

Podczas ładowania obiektu MapiMessage z pliku, możesz potrzebować określić, czy wczytana wiadomość jest plikiem szablonu, czy zwykłym e‑mailem. Korzystając z IsTemplate właściwość MapiMessage klasa, dzięki której możesz dokładnie wykryć, czy e‑mail jest szablonem, czy nie. Ta funkcjonalność może być cenna przy obsłudze i przetwarzaniu różnych typów plików e‑mail w aplikacjach i systemach.

Poniższy przykład kodu pokazuje, jak określić, czy MapiMessage jest w formacie OFT czy MSG:

var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false

var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true

Zapisz MapiMessage lub MailMessage w formacie OFT

Ten SaveOptions klasa pozwala określić dodatkowe opcje podczas zapisywania MailMessage lub MapiMessage w określonym formacie.

Poniższy przykład kodu pokazuje, jak zapisać wiadomość w formacie OFT:

// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
    eml.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    eml.Save("message.oft", saveOptions);

}

// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
    msg.Save("message.oft", SaveOptions.DefaultOft);
	
	// or alternative way #2
	var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
	
	// or alternative  way #3
	saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
    msg.Save("message.oft", saveOptions);
}

Zarządzanie cyfrowo podpisanymi wiadomościami

Aspose.Email implementuje kompletny algorytm obiektu e‑mail S/MIME. Daje to API pełną możliwość zachowania podpisów cyfrowych przy konwersji wiadomości pomiędzy formatami.

Zachowaj podpis podczas konwersji EML na MSG

Aspose.Email zachowuje podpis cyfrowy przy konwersji z EML do MSG. Poniższy fragment kodu pokazuje, jak konwertować z EML do MSG.

Konwertuj wiadomości S/MIME z MSG do EML

Aspose.Email zachowuje podpis cyfrowy przy konwersji z MSG do EML, jak pokazano w poniższym fragmencie kodu.

Sprawdzanie podpisów zabezpieczonych e‑maili

Dostępne są następujące funkcje umożliwiające sprawdzenie podpisu obiektów MapiMessage.

Poniższy przykład kodu pokazuje, jak wdrożyć te funkcje w swoim projekcie:

var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

var result = new SecureEmailManager().CheckSignature(eml, cert, store);

Usuwanie podpisów z MapiMessage

W celu lepszej kompatybilności, MapiMessage.RemoveSignature metoda i MapiMessage.IsSigned Właściwości służą do usunięcia cyfrowego podpisu z wiadomości.

Poniższy fragment kodu pokazuje, jak wdrożyć te funkcje w swoim projekcie:

var msg = MapiMessage.Load(fileName);

if (msg.IsSigned)
{
    var unsignedMsg = msg.RemoveSignature();
}

Odszyfrowywanie MapiMessage przy użyciu certyfikatów

Jeśli masz zaszyfrowane wiadomości MAPI i potrzebujesz je odszyfrować przy użyciu klucza prywatnego przechowywanego w certyfikacie, następujące funkcje Aspose.Email mogą być przydatne:

Poniższy fragment kodu pokazuje, jak pracować z zaszyfrowanymi wiadomościami MAPI:

var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");

if (msg.IsEncrypted);
{
    var decryptedMsg = msg.Decrypt(privateCert);
}

Ustaw kategorie kolorów dla plików MSG

Kategoria kolorystyczna oznacza wiadomość e‑mail jako mającą określoną ważność lub typ. Microsoft Outlook pozwala użytkownikom przypisywać kategorie kolorystyczne w celu odróżnienia e‑maili. Aby obsłużyć kategorię kolorystyczną, użyj FollowUpManager. Zawiera funkcje takie jak AddCategory, RemoveCategory, ClearCategories i GetCategories.

  • AddCategory przyjmuje MapiMessage oraz ciąg tekstowy kategorii kolorystycznej, na przykład "Purple Category" lub "Red Category" jako argumenty.
  • RemoveCategory przyjmuje MapiMessage oraz ciąg tekstowy kategorii kolorystycznej do usunięcia z wiadomości.
  • ClearCategories służy do usunięcia wszystkich kategorii kolorystycznych z wiadomości.
  • GetCategories służy do pobrania wszystkich kategorii kolorystycznych z określonej wiadomości.

Poniższy przykład wykonuje zadania wymienione poniżej:

  1. Dodaj kategorię kolorystyczną.
  2. Dodaj kolejną kategorię kolorystyczną.
  3. Pobierz listę wszystkich kategorii.
  4. Usuń wszystkie kategorie.

Dostęp do informacji o kontynuacji w plikach MSG

API Aspose.Email umożliwia dostęp do informacji zwrotnych z wysłanej lub otrzymanej wiadomości. Może pobrać informacje o potwierdzeniach odczytu, dostarczenia oraz wyniki głosowania z pliku wiadomości.

Pobieranie informacji o potwierdzeniach odczytu i doręczenia

Poniższy fragment kodu pokazuje, jak pobrać informacje o potwierdzeniach odczytu i dostarczenia.

Tworzenie wiadomości przekazywanych i odpowiedzi

API Aspose.Email zapewnia możliwość tworzenia i formatowania wiadomości przekazywanych i odpowiedzi. Ten ReplyMessageBuilder i ForwardMessageBuilder klasy API są używane do tworzenia wiadomości Reply i Forward odpowiednio. Wiadomość Reply lub Forward może być tworzona przy użyciu dowolnego z trybów OriginalMessageAdditionMode enum. Ten enum ma następujące wartości:

  • OriginalMessageAdditionMode.None – Oryginalna wiadomość nie jest dołączona w wiadomości odpowiedzi.
  • OriginalMessageAdditionMode.Attachment – Oryginalna wiadomość jest dołączona jako załącznik w wiadomości odpowiedzi
  • OriginalMessageAdditionMode.Textpart – oryginalna wiadomość jest dołączona jako tekst w treści wiadomości odpowiedzi

Tworzenie wiadomości odpowiedzi

Poniższy fragment kodu pokazuje, jak utworzyć wiadomość odpowiedzi.

Tworzenie wiadomości przekazywanych

Poniższy fragment kodu pokazuje, jak utworzyć wiadomość przekazaną dalej.