Збереження електронного листа у формат PDF

У цій статті показано, як конвертувати електронний лист у PDF за допомогою Aspose.Email. Aspose.Email для .NET працює з мережевими протоколами та функціями Microsoft Outlook і не може виконати пряме перетворення у PDF. Щоб подолати це, у прикладах статті використовується Aspose.Email для перетворення електронного листа у потік MHTML, а потім Aspose.Words для .NET завантажує цей потік MHTML і зберігає його у PDF. Електронний лист може містити також вкладення. Оскільки кожне вкладення може мати різний медіа‑тип, Aspose.Email ігнорує ці вкладення під час конвертації у MHTML, тобто лише вбудовані зображення в повідомленні будуть частиною MHTML, а всі звичайні вкладення будуть проігноровані.

Конвертація електронного листа у PDF

Нижче наведено код, який демонструє конвертацію електронних листів у PDF за допомогою Aspose.Email у поєднанні з Aspose.Words для .NET. Це включає такі кроки:

  1. Завантажте електронний лист за допомогою MailMessage
  2. Зберегти лист у MemoryStream у форматі MHTML
  3. Завантажити потік за допомогою Aspose.Words
  4. Зберегти лист у PDF

Вихідний лист можна бачити наступним чином:

todo:image_alt_text

Отриманий PDF виглядає так, як на наведеному зображенні:

todo:image_alt_text

Наведений фрагмент коду показує, як конвертувати електронні листи у PDF.

string dataDir = RunExamples.GetDataDir_KnowledgeBase();
MailMessage mailMsg = MailMessage.Load(dataDir + "message3.msg");
MemoryStream ms = new MemoryStream();
mailMsg.Save(ms, Aspose.Email.SaveOptions.DefaultMhtml);

// create an instance of LoadOptions and set the LoadFormat to Mhtml
var loadOptions = new Aspose.Words.Loading.LoadOptions();
loadOptions.LoadFormat = LoadFormat.Mhtml;

// create an instance of Document and load the MTHML from MemoryStream
var document = new Aspose.Words.Document(ms, loadOptions);

// create an instance of HtmlSaveOptions and set the SaveFormat to Html
var saveOptions = new Aspose.Words.Saving.PdfSaveOptions();
document.Save(dataDir + "SaveEmailAsPDF_out.pdf", saveOptions);