Správa zpráv Outlook

Uložit e‑mail jako HTML

Aspose.Email umožňuje ukládat e‑mailové prostředky s relativními cestami při exportu zpráv do formátu HTML. Tato funkce poskytuje větší flexibilitu v tom, jak jsou prostředky propojeny ve výstupním souboru HTML, což usnadňuje sdílení a zobrazování uložených e‑mailů na různých systémech. Pro uložení prostředků s relativními cestami použijte HtmlSaveOptions.UseRelativePathToResources vlastnosti. Výchozí hodnota vlastnosti je false (prostředky jsou ukládány s absolutními cestami). Když je nastavena na true, prostředky jsou ukládány s relativními cestami.

HTML soubory s relativními cestami jsou přenosnější a mohou být zobrazeny správně bez ohledu na strukturu souborů v hostitelském prostředí. Můžete si vybrat mezi absolutními a relativními cestami podle požadavků. Vlastní cesty pro prostředky můžete definovat pomocí ResourceHtmlRendering událost.

Následující ukázka kódu demonstruje, jak uložit e‑mail s výchozí relativní cestou k prostředkům:

var msg = MapiMessage.Load(sourceFileName);

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

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

V tomto případě budou prostředky uloženy do složky [html file name]_files, ve stejné cestě jako soubor .html, a HTML bude odkazovat na prostředky pomocí relativních cest.

Níže uvedený ukázkový kód demonstruje, jak uložit s absolutní cestou k prostředkům:

var msg = MapiMessage.Load(sourceFileName);

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

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

Stejně jako v prvním případě budou prostředky ve výchozím nastavení uloženy do složky [html file name]_files, ale HTML bude odkazovat na prostředky pomocí absolutních cest.

Použitím ResourceHtmlRendering události můžete nastavit vlastní relativní nebo absolutní cesty pro zdroje. Při přizpůsobování cest pomocí ResourceHtmlRendering obslužná rutina události a protože UseRelativePathToResources je nastaveno na true, měli byste přiřadit relativní cestu k PathToResourceFile vlastnost pro zajištění správného odkazování.

Následující ukázka kódu demonstruje, jak přizpůsobit relativní cestu pomocí události 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);

Převést MSG na MIME zprávy

Aspose.Email API poskytuje možnost konverze souborů MSG na MIME zprávy pomocí ToMailMessage metoda.

MapiMessage msg = new MapiMessage("sender@test.com","recipient1@test.com; recipient2@test.com","Test Subject","This is a body of message.");
var options = new MailConversionOptions();
options.ConvertAsTnef = true;
MailMessage mail = msg.ToMailMessage(options);

Nastavit časové limity pro převod zprávy a načítání

Následující funkce vám umožní nastavit časový limit v milisekundách pro proces převodu a načítání:

Níže uvedená ukázka kódu vám ukáže, jak nastavit časový limit při převodu zprávy:

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);

Konverze MSG na EML se zachováním těla RTF

Konverze souboru MSG na EML zachovávající tělo RTF lze provést dvěma způsoby:

Obě vlastnosti získávají nebo nastavují hodnotu, která určuje, zda zachovat tělo rtf v MailMessage.

Následující ukázky kódu ukazují, jak převést soubor MSG na EML a zachovat tělo ve formátu 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);

Zpracování souborů šablon Outlooku (.OFT)

Šablony Outlooku jsou velmi užitečné, když chcete opakovaně odesílat podobnou e‑mailovou zprávu. Místo toho, aby jste zprávu pokaždé připravovali od nuly, nejprve ji připravte v Outlooku a uložte jako Outlook Template (OFT). Poté, kdykoli potřebujete zprávu odeslat, můžete ji vytvořit ze šablony, čímž ušetříte čas při psaní stejného textu v těle nebo předmětu, nastavení formátování a podobně. Aspose.Email nabízí MailMessage třída může být použita k načtení a čtení souboru šablony Outlook (OFT). Jakmile je šablona Outlook načtena v instanci MailMessage třídy, můžete aktualizovat odesílatele, příjemce, tělo, předmět a další vlastnosti. Po aktualizaci vlastností:

  • Odeslat e‑mail pomocí SmtpClient třídu nebo
  • Uložit zprávu jako MSG a provést další aktualizace/validace pomocí Microsoft Outlook.

V níže uvedených ukázkách kódu děláme:

  1. Načíst šablonu pomocí MailMessage třída.
  2. Aktualizovat některé vlastnosti.
  3. Uložit zprávu ve formátu MSG.

Následující úryvek kódu ukazuje, jak načíst soubor OFT, aktualizovat zprávu a uložit ji ve formátu MSG.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

// Load the Outlook template (OFT) file in MailMessage's instance
MailMessage message = MailMessage.Load(dataDir + "sample.oft", new MsgLoadOptions());

// Set the sender and recipients information
string senderDisplayName = "John";
string senderEmailAddress = "john@abc.com";
string recipientDisplayName = "William";
string recipientEmailAddress = "william@xzy.com";

message.Sender = new MailAddress(senderEmailAddress, senderDisplayName);
message.To.Add(new MailAddress(recipientEmailAddress, recipientDisplayName));
message.HtmlBody = message.HtmlBody.Replace("DisplayName", "<b>" + recipientDisplayName + "</b>");

// Set the name, location and time in email body
string meetingLocation = "<u>" + "Hall 1, Convention Center, New York, USA" + "</u>";
string meetingTime = "<u>" + "Monday, June 28, 2010" + "</u>";
message.HtmlBody = message.HtmlBody.Replace("MeetingPlace", meetingLocation);
message.HtmlBody = message.HtmlBody.Replace("MeetingTime", meetingTime);

// Save the message in MSG format and open in Office Outlook
MapiMessage msg = MapiMessage.FromMailMessage(message);
msg.SetMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
msg.Save(dataDir + "ReadAndWritingOutlookTemplateFile_out.msg");

Uložit soubory MSG jako šablony

Následující úryvek kódu vám ukazuje, jak uložit soubor Outlook MSG jako šablonu.

using (MapiMessage mapi = new MapiMessage("test@from.to", "test@to.to", "template subject", "Template body"))
{
    string oftMapiFileName = "mapiToOft.oft";
    mapi.SaveAsTemplate(oftMapiFileName);
}            

Určit typ MAPI zprávy (OFT nebo MSG)

Při načítání objektu MapiMessage ze souboru můžete potřebovat zjistit, zda je načtená zpráva souborem šablony nebo běžným e‑mailem. Použitím IsTemplate vlastnost třídy MapiMessage třída, pomocí které můžete přesně zjistit, zda je e‑mail šablonou nebo ne. Tato funkčnost může být užitečná při zpracování různých typů e‑mailových souborů v aplikacích a systémech.

Níže uvedený příklad kódu ukazuje, jak zjistit, zda je MapiMessage formátu OFT nebo MSG:

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

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

Uložit MapiMessage nebo MailMessage ve formátu OFT

The SaveOptions třída umožňuje specifikovat další možnosti při ukládání MailMessage nebo MapiMessage do konkrétního formátu.

Následující ukázkový kód demonstruje, jak uložit zprávu do formátu 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);
}

Správa digitálně podepsaných zpráv

Aspose.Email implementuje kompletní algoritmus S/MIME e‑mailových objektů. To poskytuje API plnou moc zachovat digitální podpisy při převodu zpráv mezi formáty.

Zachovat podpis během převodu EML na MSG

Aspose.Email zachovává digitální podpis při konverzi z EML do MSG. Následující úryvek kódu vám ukazuje, jak provést konverzi z EML do MSG.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

// Load mail message
MailMessage message = MailMessage.Load(dataDir + "Message.eml", new EmlLoadOptions());
// Save as MSG
message.Save(dataDir + "ConvertEMLToMSG_out.msg", SaveOptions.DefaultMsgUnicode);

Převést S/MIME zprávy z MSG na EML

Aspose.Email zachovává digitální podpis při konverzi z MSG do EML, jak je ukázáno v následujícím úryvku kódu.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

// Load the MSG file
MailMessage msg = MailMessage.Load(dataDir + "message.msg", new MsgLoadOptions());

// Save as EML
msg.Save(dataDir + "ConvertMIMEMessagesFromMSGToEML_out.eml", SaveOptions.DefaultEml);

Kontrola podpisů zabezpečených e‑mailů

Následující funkce jsou k dispozici pro kontrolu podpisu objektů MapiMessage.

Níže uvedený ukázkový kód ukazuje, jak implementovat funkce ve vašem projektu:

Zkontrolujte podpis zprávy bez poskytování certifikátu:

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

Zkontrolujte podpis šifrované zprávy poskytnutím certifikátu pro dešifrování a úložiště, které obsahuje certifikáty použité pro ověření:

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var msg = MapiMessage.Load(fileName);

var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

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

Odstranit podpisy z MapiMessage

Pro lepší kompatibilitu, MapiMessage.RemoveSignature metoda a MapiMessage.IsSigned vlastnosti se používají k odebrání digitálního podpisu ze zprávy.

Následující úryvek kódu ukazuje, jak implementovat tyto funkce do vašeho projektu:

var msg = MapiMessage.Load(fileName);

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

Dešifrovat MapiMessage pomocí certifikátů

Pokud máte šifrované MAPI zprávy a potřebujete je dešifrovat pomocí soukromého klíče uloženého v certifikátu, mohou být užitečné následující funkce Aspose.Email:

Následující úryvek kódu ukazuje, jak pracovat s šifrovanými MAPI zprávami:

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

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

Nastavit barevné kategorie pro soubory MSG

Barevná kategorie označuje e‑mailovou zprávu určitým způsobem důležitosti nebo kategorie. Microsoft Outlook umožňuje uživatelům přiřadit barevné kategorie k rozlišení e‑mailů. Pro práci s barevnou kategorií použijte FollowUpManager. Obsahuje funkce jako například AddCategory, RemoveCategory, ClearCategories a GetCategories.

  • AddCategory přebírá MapiMessage a řetězec barevné kategorie, např. "Fialová kategorie" nebo "Červená kategorie" jako argumenty.
  • RemoveCategory přebírá MapiMessage a řetězec barevné kategorie, který má být ze zprávy odstraněn.
  • ClearCategories slouží k odstranění všech barevných kategorií ze zprávy.
  • GetCategories slouží k načtení všech barevných kategorií z konkrétní zprávy.

Následující příklad provádí úkoly uvedené níže:

  1. Přidat barevnou kategorii.
  2. Přidat další barevnou kategorii.
  3. Načíst seznam všech kategorií.
  4. Odstranit všechny kategorie.
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

MapiMessage msg = MapiMessage.FromFile(dataDir + "message1.msg");

// Add Two category
FollowUpManager.AddCategory(msg, "Purple Category");
FollowUpManager.AddCategory(msg, "Red Category");

// Retrieve the list of available categories
IList<string> categories = FollowUpManager.GetCategories(msg);

// Remove the specified category and then Clear all categories
FollowUpManager.RemoveCategory(msg, "Red Category");
FollowUpManager.ClearCategories(msg);

Přístup k informacím o následném zpracování v souborech MSG

Aspose.Email API poskytuje možnost přístupu k informacím o následném zpracování ze zaslané nebo přijaté zprávy. Může získat informace o přečtení, potvrzení doručení a výsledcích hlasování ze souboru zprávy.

Získat informace o doručení a přečtení

Následující úryvek kódu vám ukazuje, jak získat informace o potvrzení přečtení a doručení.

MapiMessage msg = MapiMessage.FromFile(dataDir + @"TestMessage.msg");
foreach (MapiRecipient recipient in msg.Recipients)
{
    Console.WriteLine(string.Format("Recipient: {0}", recipient.DisplayName));

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY property
    Console.WriteLine(string.Format("Delivery time: {0}", recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_DELIVERY].GetDateTime()));

    // Get the PR_RECIPIENT_TRACKSTATUS_TIME_READ property
    Console.WriteLine(string.Format("Read time: {0}", recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME_READ].GetDateTime()));

    Console.WriteLine();
}

Vytvořit zprávy pro přeposlání a odpověď

Aspose.Email API poskytuje možnost vytvářet a formátovat zprávy pro přeposlání a odpověď. Aspose.Email API poskytuje možnost vytvářet a formátovat zprávy předání a odpovědi. The a ReplyMessageBuilder ForwardMessageBuilder třídy API jsou použity k vytvoření odpovědních a předávacích zpráv. Odpověď nebo předání může být vytvořeno pomocí libovolného z režimů OriginalMessageAdditionMode

  • výčtový typ. Tento výčtový typ má následující hodnoty:
  • OriginalMessageAdditionMode.None – Původní zpráva není zahrnuta v odpovědi.
  • OriginalMessageAdditionMode.Textpart – Původní zpráva je zahrnuta jako text v těle odpovědní zprávy

Vytvořit odpovědi

Následující úryvek kódu ukazuje, jak vytvořit odpovědní zprávu.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

MapiMessage originalMsg = MapiMessage.FromFile(dataDir + "message1.msg");
ReplyMessageBuilder builder = new ReplyMessageBuilder();

// Set ReplyMessageBuilder Properties
builder.ReplyAll = true;
builder.AdditionMode = OriginalMessageAdditionMode.Textpart;
builder.ResponseText = "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>";
            
MapiMessage replyMsg = builder.BuildResponse(originalMsg);
replyMsg.Save(dataDir+ "reply_out.msg");

Vytvořit zprávy pro přeposlání

Následující úryvek kódu ukazuje, jak vytvořit odpovědní zprávu.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();

MapiMessage originalMsg = MapiMessage.FromFile(dataDir +"message1.msg");
ForwardMessageBuilder builder = new ForwardMessageBuilder();
builder.AdditionMode = OriginalMessageAdditionMode.Textpart;
MapiMessage forwardMsg = builder.BuildResponse(originalMsg);
forwardMsg.Save(dataDir + "forward_out.msg");