Управление на Outlook съобщения

Contents
[ ]

Записване на имейли като HTML

Aspose.Email прави възможно записването на имейл ресурси с относителни пътища при експортиране на съобщения в HTML формат. Тази функция осигурява повече гъвкавост при свързването на ресурсите в изходния HTML файл, като улеснява споделянето и показването на записаните имейли на различни системи. За да записвате ресурси с относителни пътища, използвайте HtmlSaveOptions.UseRelativePathToResources свойство. Стойността по подразбиране е false (ресурсите се записват с абсолютни пътища). Когато е зададено на true, ресурсите се записват с относителни пътища.

HTML файловете с относителни пътища са по-переносими и могат да се преглеждат правилно независимо от файловата структура на хостинг средата. Можете да избирате между абсолютни и относителни пътища в зависимост от изискванията. Можете да зададете персонализирани пътища за ресурсите, като използвате ResourceHtmlRendering събитие.

Следният пример с код демонстрира как да записвате имейл със зададен по подразбиране относителен път към ресурсите:

var msg = MapiMessage.Load(sourceFileName);

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

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

В този случай ресурсите ще бъдат записани в папка [html file name]_files, на същия път като .html файла и HTML ще препраща ресурсите чрез относителни пътища.

Следният пример с код демонстрира как да записвате с абсолютен път към ресурсите:

var msg = MapiMessage.Load(sourceFileName);

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

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

Както в първия случай, ресурсите ще бъдат записани по подразбиране в папка [html file name]_files, но HTML ще препраща ресурсите чрез абсолютни пътища.

Използвайки ResourceHtmlRendering събитие, можете да зададете персонализирани относителни или абсолютни пътища за ресурсите. При персонализиране на пътищата с ResourceHtmlRendering обработчик на събитието и тъй като UseRelativePathToResources е зададено на true, трябва да зададете относителен път към PathToResourceFile свойство за осигуряване на правилно препратка.

Следният пример с код демонстрира как да персонализирате относителния път, използвайки събитие 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);

Конвертиране на MSG към MIME съобщения

Aspose.Email API предоставя възможност за конвертиране на MSG файлове към MIME съобщения, като използва ToMailMessage метод.

Задаване на време за изчакване за конвертиране и зареждане на съобщения

Следните функции ще ви позволят да зададете време за изчакване в милисекунди за процеса на конвертиране и зареждане:

  • MailConversionOptions.Timeout property – Ограничаване на времето в милисекунди при конвертиране на съобщение.

  • MailConversionOptions.TimeoutReached - Предизвиква се, ако времето изтече по време на конвертиране към MailMessage.

  • MsgLoadOptions.Timeout - Ограничавя времето в милисекунди при конвертиране на съобщение.

  • MsgLoadOptions.TimeoutReached - Предизвиква се, ако времето изтече по време на конвертиране към MailMessage.

Следният пример с код ще ви покаже как да зададете време за изчакване при конвертиране на съобщение:

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 към EML, запазвайки RTF тяло

Конвертирането на MSG файл към EML, запазвайки RTF тяло, може да се извърши по два начина:

И двете свойства получават или задават стойност, указваща дали да се запази rtf тяло в MailMessage.

Следните фрагменти от код показват как да конвертирате MSG файл към EML и да запазите 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);

Работа с Outlook шаблонни файлове (.OFT)

Шаблоните на Outlook са много полезни, когато искате да изпращате едно и също имейл съобщение отново и отново. Вместо да подготвяте съобщението от нулата всеки път, първо го подгответе в Outlook и го запишете като Outlook шаблон (OFT). След това, когато имате нужда да изпратите съобщението, можете да го създадете от шаблона, спестявайки време за писане на същия текст в тялото или темата, задаване на форматиране и др. Aspose.Email’s MailMessage class може да се използва за зареждане и четене на Outlook шаблон (OFT) файл. След като шаблонът е зареден в инстанция на MailMessage клас, можете да актуализирате подателя, получателя, съдържанието, темата и други свойства. След актуализиране на свойствата:

  • Изпратете имейла, като използвате SmtpClient клас или
  • Запазете съобщението като MSG и извършете допълнителни актуализации/валидиране, използвайки Microsoft Outlook.

В примерите с код по-долу, ние:

  1. Заредете шаблона, като използвате MailMessage клас.
  2. Актуализирайте някои от свойствата.
  3. Запазете съобщението във формат MSG.

Следният фрагмент от код показва как да заредите OFT файл, актуализирате съобщението и го запишете във формат MSG.

Записване на MSG файлове като шаблони

Следният кодов фрагмент показва как да запазите Outlook MSG файл като шаблон.

Определяне на тип MAPI съобщение (OFT или MSG)

При зареждане на MapiMessage обект от файл, може да се наложи да определите дали зареденият файл е шаблон или обикновен имейл файл. Чрез използване на IsTemplate свойство на MapiMessage class, можете точно да определите дали имейлът е шаблон или не. Тази функционалност може да бъде ценна при обработка и управление на различни типове имейл файлове в приложения и системи.

Примерът с код по-долу демонстрира как да се определи дали MapiMessage е OFT или 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

Запазване на MapiMessage или MailMessage във формат OFT

Този SaveOptions class позволява да зададете допълнителни опции при запазване на MailMessage или MapiMessage в определен формат.

Следният пример с код демонстрира как да запазите съобщение във формат 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);
}

Управление на цифрово подписани съобщения

Aspose.Email реализира пълния S/MIME имейл алгоритъм. Това дава на API-то пълна възможност да запазва цифрови подписи при конвертиране на съобщения между формати.

Запазване на подписа при конвертиране от EML към MSG

Aspose.Email запазва цифровия подпис при конвертиране от EML към MSG. Следният кодов фрагмент показва как да конвертирате от EML към MSG.

Конвертиране на S/MIME съобщения от MSG към EML

Aspose.Email запазва цифровия подпис при конвертиране от MSG към EML, както е показано в следния кодов фрагмент.

Проверка на подписи на защитени имейли

Следните функции са налични за проверка на подписи на MapiMessage обекти.

Следният пример с код показва как да внедрите функциите във вашия проект:

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

Премахване на подписи от MapiMessage

За по‑добра съвместимост, MapiMessage.RemoveSignature метод и MapiMessage.IsSigned Свойствата се използват за премахване на цифров подпис от съобщение.

Следният кодов отрязък показва как да внедрите тези функции във вашия проект:

var msg = MapiMessage.Load(fileName);

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

Дешифриране на MapiMessage с сертификати

Ако имате криптирани MAPI съобщения и трябва да ги декриптирате, използвайки частния ключ, съхранен в сертификат, следните функции на Aspose.Email могат да бъдат полезни:

  • MapiMessage.IsEncrypted - Връща стойност, указваща дали съобщението е криптирано.
  • MapiMessage.Decrypt() - Дешифрира това съобщение (методът търси в текущите потребителски и компютърни My store‑ове подходящ сертификат и частен ключ).
  • MapiMessage.Decrypt(X509Certificate2 certificate) - Декриптира това съобщение със сертификат.

Следният кодов фрагмент показва как да работите с криптирани MAPI съобщения:

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

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

Задаване на цветни категории за MSG файлове

Цветовата категория маркира имейл съобщение за определена важност или категория. Microsoft Outlook позволява на потребителите да задават цветови категории за разграничаване на имейли. За работа с цветова категория използвайте FollowUpManager. Съдържа функции като AddCategory, RemoveCategory, ClearCategories и GetCategories.

  • AddCategory приема MapiMessage и низа на цветова категория, например "Purple Category" или "Red Category", като аргументи.
  • RemoveCategory приема MapiMessage и низът на цветова категория, който да се премахне от съобщението.
  • ClearCategories се използва за премахване на всички цветови категории от съобщението.
  • GetCategories се използва за извличане на всички цветови категории от конкретно съобщение.

Следният пример изпълнява задачите, както е дадено по-долу:

  1. Добавете цветова категория.
  2. Добавете още една цветова категория.
  3. Получете списъка с всички категории.
  4. Премахнете всички категории.

Достъп до информация за последващи действия в MSG файлове

Aspose.Email API предоставя възможност за достъп до информацията за проследяване от изпратено или получено съобщение. Тя може да извлича информация за разписка за прочитане, разписка за доставка и резултати от гласуване от файл със съобщение.

Получаване на информация за получени и доставени разписки

Следният кодов фрагмент показва как да извлечете информация за разписка за прочитане и доставка.

Създаване на съобщения за препращане и отговор

Aspose.Email API предоставя възможност за създаване и форматиране на съобщения за препращане и отговор. ReplyMessageBuilder и ForwardMessageBuilder класовете на API се използват за създаване съответно на Reply и Forward съобщения. Reply или Forward съобщение може да бъде създадено, използвайки който и да е от режимите на OriginalMessageAdditionMode enum. Този enum има следните стойности:

  • OriginalMessageAdditionMode.None – Оригиналното съобщение не е включено в отговорното съобщение.
  • OriginalMessageAdditionMode.Attachment – Оригиналното съобщение е включено като прикачен файл в отговорното съобщение
  • OriginalMessageAdditionMode.Textpart – Оригиналното съобщение се включва като текст в тялото на отговорното съобщение

Създаване на съобщения с отговор

Следният кодов отрязък показва как да създадете съобщение с отговор.

Създаване на съобщения за препращане

Следният кодов фрагмент показва как да създадете съобщение за препращане.