Verwalten von Outlook‑Nachrichten
E‑Mails als HTML speichern
Aspose.Email ermöglicht das Speichern von E‑Mail‑Ressourcen mit relativen Pfaden beim Exportieren von Nachrichten ins HTML‑Format. Diese Funktion bietet mehr Flexibilität bei der Verlinkung von Ressourcen in der Ausgabedatei, wodurch das Teilen und Anzeigen gespeicherter E‑Mails auf verschiedenen Systemen erleichtert wird. Um Ressourcen mit relativen Pfaden zu speichern, verwenden Sie HtmlSaveOptions.UseRelativePathToResources Eigenschaft verwenden. Der Standardwert ist false (Ressourcen werden mit absoluten Pfaden gespeichert). Wenn auf true gesetzt, werden Ressourcen mit relativen Pfaden gespeichert.
HTML‑Dateien mit relativen Pfaden sind portabler und können unabhängig von der Dateistruktur der Hosting‑Umgebung korrekt angezeigt werden. Je nach Anforderung können Sie zwischen absoluten und relativen Pfaden wählen. Sie können benutzerdefinierte Pfade für Ressourcen festlegen, indem Sie die ResourceHtmlRendering Ereignis.
Das folgende Codebeispiel demonstriert, wie man eine E‑Mail mit dem standardmäßigen relativen Pfad zu Ressourcen speichert:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
In diesem Fall werden die Ressourcen im Ordner [html file name]_files gespeichert, im selben Pfad wie die .html‑Datei, und das HTML referenziert die Ressourcen über relative Pfade.
Das folgende Codebeispiel demonstriert, wie man mit absolutem Pfad zu Ressourcen speichert:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = false
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Wie im ersten Fall werden Ressourcen standardmäßig im Ordner [html file name]_files gespeichert, während das HTML die Ressourcen über absolute Pfade referenziert.
Durch Verwendung des ResourceHtmlRendering Ereignis können Sie benutzerdefinierte relative oder absolute Pfade für Ressourcen festlegen. Beim Anpassen von Pfaden mit dem ResourceHtmlRendering Event‑Handler, und da UseRelativePathToResources auf true gesetzt ist, sollten Sie einen relativen Pfad zu dem PathToResourceFile Eigenschaft, um eine korrekte Referenzierung sicherzustellen.
Das folgende Codebeispiel demonstriert, wie man einen benutzerdefinierten relativen Pfad mit dem ResourceHtmlRendering‑Event
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);
MSG in MIME‑Nachrichten konvertieren
Die Aspose.Email‑API ermöglicht die Konvertierung von MSG‑Dateien zu MIME‑Nachrichten mittels ToMailMessage Methode.
Timeouts für Nachrichtenkonvertierung und -laden festlegen
Die folgenden Funktionen ermöglichen es, das Timeout in Millisekunden für den Konvertierungs- und Ladevorgang festzulegen:
-
MailConversionOptions.Timeout property – begrenzt die Zeit in Millisekunden beim Konvertieren einer Nachricht.
-
MailConversionOptions.TimeoutReached - Wird ausgelöst, wenn die Zeit beim Konvertieren zu MailMessage abläuft.
-
MsgLoadOptions.Timeout - Begrenzt die Zeit in Millisekunden beim Konvertieren einer Nachricht.
-
MsgLoadOptions.TimeoutReached - Wird ausgelöst, wenn die Zeit beim Konvertieren zu MailMessage abläuft.
Das folgende Codebeispiel zeigt, wie Sie ein Timeout beim Konvertieren einer Nachricht festlegen:
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);
MSG‑zu‑EML‑Konvertierung unter Beibehaltung des RTF‑Bodys
Die Konvertierung einer MSG‑Datei nach EML unter Beibehaltung des RTF‑Bodys kann auf zwei Arten durchgeführt werden:
-
unter Verwendung von MsgLoadOptions.PreserveRtfContent Eigenschaft des MsgLoadOptions class;
-
unter Verwendung von MailConversionOptions.PreserveRtfContent Eigenschaft des MailConversionOptions class;
Beide Eigenschaften erhalten bzw. setzen einen Wert, der angibt, ob der RTF‑Body in MailMessage beibehalten werden soll.
Die folgenden Code‑Snippets zeigen, wie man eine MSG‑Datei in EML konvertiert und den RTF‑Body beibehält:
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);
Umgang mit Outlook‑Vorlagendateien (.OFT)
Outlook‑Vorlagen sind sehr nützlich, wenn Sie immer wieder eine ähnliche E‑Mail senden möchten. Anstatt jedes Mal die Nachricht von Grund auf neu zu erstellen, können Sie sie zunächst in Outlook vorbereiten und als Outlook‑Vorlage (OFT) speichern. Anschließend können Sie bei Bedarf die Nachricht aus der Vorlage erzeugen, wodurch Sie Zeit sparen, indem Sie denselben Text im Textkörper oder Betreff nicht erneut eingeben, Formatierungen übernehmen usw. Aspose.Email’s MailMessage Klasse kann verwendet werden, um eine Outlook‑Vorlage (OFT) zu laden und zu lesen. Sobald die Outlook‑Vorlage in einer Instanz von MailMessage Klasse, können Sie Absender, Empfänger, Body, Betreff und weitere Eigenschaften aktualisieren. Nach dem Aktualisieren der Eigenschaften:
- Senden Sie die E‑Mail mit dem SmtpClient Klasse oder
- Speichern Sie die Nachricht als MSG und führen Sie weitere Aktualisierungen/Validierungen mit Microsoft Outlook durch.
In den untenstehenden Codebeispielen:
- Laden Sie die Vorlage mit dem MailMessage Klasse.
- Einige Eigenschaften aktualisieren.
- Die Nachricht im MSG‑Format speichern.
Das folgende Code‑Snippet zeigt, wie Sie die OFT‑Datei laden, die Nachricht aktualisieren und im MSG‑Format speichern.
MSG‑Dateien als Vorlagen speichern
Das folgende Code‑Snippet zeigt, wie Sie die Outlook‑MSG‑Datei als Vorlage speichern.
Bestimmen des MAPI-Nachrichtentyps (OFT oder MSG)
Beim Laden eines MapiMessage-Objekts aus einer Datei kann es erforderlich sein, festzustellen, ob die geladene Nachricht eine Vorlagendatei oder eine reguläre E‑Mail-Datei ist. Durch die Verwendung der IsTemplate Eigenschaft des MapiMessage Klasse, mit der Sie genau erkennen können, ob eine E‑Mail eine Vorlage ist oder nicht. Diese Funktion kann beim Umgang und der Verarbeitung verschiedener E‑Mail-Dateitypen in Anwendungen und Systemen wertvoll sein.
Das nachstehende Codebeispiel zeigt, wie man ermittelt, ob eine MapiMessage im OFT- oder MSG-Format vorliegt:
var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false
var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true
Speichern von MapiMessage oder MailMessage im OFT-Format
Die SaveOptions Klasse ermöglicht das Festlegen zusätzlicher Optionen beim Speichern einer MailMessage oder MapiMessage in ein bestimmtes Format.
Das folgende Codebeispiel zeigt, wie man eine Nachricht im OFT-Format speichert:
// 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);
}
Verwalten digital signierter Nachrichten
Aspose.Email implementiert den vollständigen S/MIME‑E‑Mail‑Objekt‑Algorithmus. Dadurch erhält die API die komplette Möglichkeit, digitale Signaturen beim Konvertieren von Nachrichten zwischen Formaten beizubehalten.
Signatur beim Konvertieren von EML zu MSG erhalten
Aspose.Email bewahrt die digitale Signatur beim Konvertieren von EML zu MSG. Das folgende Code‑Snippet zeigt, wie man von EML zu MSG konvertiert.
S/MIME‑Nachrichten von MSG nach EML konvertieren
Aspose.Email bewahrt die digitale Signatur beim Konvertieren von MSG zu EML, wie im folgenden Code‑Snippet gezeigt.
Signaturen sicherer E‑Mails prüfen
Die folgenden Funktionen stehen zur Verfügung, um die Signatur von MapiMessage‑Objekten zu überprüfen.
- SecureEmailManager Klasse zur Überprüfung der Signatur sicherer E‑Mails.
- SmimeResult Klasse zum Speichern der Ergebnisse der Prüfung.
- SecureEmailManager.CheckSignature(MapiMessage msg) Methode.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) Methode.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) Methode.
Das nachstehende Codebeispiel zeigt, wie die Funktionen in Ihrem Projekt implementiert werden:
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);
Signaturen aus MapiMessages entfernen
Für bessere Kompatibilität, die MapiMessage.RemoveSignature Methode und MapiMessage.IsSigned Eigenschaften werden verwendet, um eine digitale Signatur aus einer Nachricht zu entfernen.
Das folgende Code‑Snippet zeigt, wie diese Funktionen in Ihr Projekt implementiert werden:
var msg = MapiMessage.Load(fileName);
if (msg.IsSigned)
{
var unsignedMsg = msg.RemoveSignature();
}
MapiMessages mit Zertifikaten entschlüsseln
Wenn Sie verschlüsselte MAPI‑Nachrichten besitzen und diese mit dem in einem Zertifikat gespeicherten privaten Schlüssel entschlüsseln müssen, können die folgenden Funktionen von Aspose.Email nützlich sein:
- MapiMessage.IsEncrypted - Gibt einen Wert zurück, der angibt, ob die Nachricht verschlüsselt ist.
- MapiMessage.Decrypt() - Entschlüsselt diese Nachricht (Methode durchsucht die My‑Stores des aktuellen Benutzers und Computers nach dem passenden Zertifikat und privaten Schlüssel).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Entschlüsselt diese Nachricht mit Zertifikat.
Das folgende Code‑Snippet zeigt, wie man mit verschlüsselten MAPI‑Nachrichten arbeitet:
var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");
if (msg.IsEncrypted);
{
var decryptedMsg = msg.Decrypt(privateCert);
}
Farbkategorien für MSG-Dateien festlegen
Eine Farbkategorie kennzeichnet eine E‑Mail-Nachricht hinsichtlich einer Art von Wichtigkeit oder Kategorie. Microsoft Outlook ermöglicht es Benutzern, Farbkategorien zuzuweisen, um E‑Mails zu unterscheiden. Um die Farbkategorie zu verarbeiten, verwenden Sie die FollowUpManager. Sie enthält Funktionen wie AddCategory, RemoveCategory, ClearCategories und GetCategories.
- AddCategory nimmt MapiMessage und die Farbkategorie‑Zeichenkette, zum Beispiel "Lila Kategorie" oder "Rote Kategorie", als Argumente.
- RemoveCategory nimmt MapiMessage und die Farbkategorie‑Zeichenkette, die aus der Nachricht entfernt werden soll.
- ClearCategories wird verwendet, um alle Farbkategorien aus der Nachricht zu entfernen.
- GetCategories wird verwendet, um alle Farbkategorien aus einer bestimmten Nachricht abzurufen.
Das folgende Beispiel führt die nachstehenden Aufgaben aus:
- Eine Farbkategorie hinzufügen.
- Eine weitere Farbkategorie hinzufügen.
- Die Liste aller Kategorien abrufen.
- Alle Kategorien entfernen.
Nachverfolgungsinformationen in MSG‑Dateien abrufen
Die Aspose.Email‑API bietet die Möglichkeit, Follow‑Up‑Informationen aus einer gesendeten oder empfangenen Nachricht zuzugreifen. Sie kann Lese‑, Zustell‑ und Abstimmungsergebnis‑Informationen aus einer Nachrichtendatei abrufen.
Informationen zu Lesebestätigungen und Empfangsbestätigungen abrufen
Das folgende Code‑Snippet zeigt Ihnen, wie Sie Lese‑ und Zustellbestätigungsinformationen abrufen.
Weiterleitungs‑ und Antwortnachrichten erstellen
Das Aspose.Email‑API bietet die Möglichkeit, Weiterleitungs‑ und Antwortnachrichten zu erstellen und zu formatieren. Die ReplyMessageBuilder und ForwardMessageBuilder Klassen der API werden verwendet, um jeweilig die Reply‑ und Forward‑Nachrichten zu erstellen. Eine Reply‑ oder Forward‑Nachricht kann mittels einer der Modi von OriginalMessageAdditionMode Enum. Dieses Enum hat die folgenden Werte:
- OriginalMessageAdditionMode.None – Die Originalnachricht wird nicht in die Antwortnachricht aufgenommen.
- OriginalMessageAdditionMode.Attachment – Die Originalnachricht wird als Anhang in der Antwortnachricht eingefügt
- OriginalMessageAdditionMode.Textpart – Die Originalnachricht wird als Text im Body der Antwortnachricht eingefügt
Antwortnachrichten erstellen
Das folgende Code‑Snippet zeigt, wie Sie eine Antwortnachricht erstellen.
Weiterleitungsnachrichten erstellen
Das folgende Code‑Snippet zeigt, wie eine Weiterleitungsnachricht erstellt wird.