将完整的电子邮件 body 和 header 保存为 PDF

Save complete email, body and header, as PDF

我想将完整的邮件保存为 PDF。

我在 Whosebug 1 中找到了以下代码。它保存邮件项目 body 而不是 header(例如发件人、收件人、主题)。

我试图操纵 Word.Document 以手动添加 header 信息(在下面的代码中我只是为了测试目的使用了最小的更改)但它似乎是只读的。我还想过使用 Outlook 打印功能“打印为 PDF”,但发现无法从我的 Outlook VSTO 解决方案中触发它。

using Word = Microsoft.Office.Interop.Word;

private void SaveMailAsPDF(Outlook.MailItem _mailitem)
        {
            //source: 
            Outlook.MailItem mi = _mailitem;
            mi.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
string datetimeReceived = mi.ReceivedTime.ToString("yyyyMMdd-Hmmss");
            string fullPath = @"C:\Users\al\Documents\OutlookMailsTest\" + datetimeReceived + "Test.pdf";

            Word.Document doc = mi.GetInspector.WordEditor;
            //doc.Paragraphs.Add();
            //doc.Paragraphs.Add();
            //Word.Range rng = doc.Range(0, 0);
            //rng.Text = "New Text";
            doc.SaveAs2(fullPath, FileFormat: Word.WdSaveFormat.wdFormatPDF);
        }

尝试使用MailItem.SaveAs以MHTML格式保存(它保留嵌入的图片并包括headers),然后使用Word object模型打开MHTML文件并保存作为 PDF 文件。

Outlook object 模型不提供任何打印为 pdf 的方法。 MailItem.PrintOut 方法使用所有默认值打印 Outlook 项目 settings.The PrintOut 方法是唯一可用于打印的 Outlook 方法。

您可以使用 Word object 模型以您需要的格式保存消息 body。例如,您可以使用打开的 XML 文档 (*.docx) 保存表示消息 body 的文档,然后使用打开 XML 添加消息的 SDK 打开它进行编辑 headers(如果需要)。有关详细信息,请参阅 Welcome to the Open XML SDK 2.5 for Office

您可以自由使用 third-party 组件来使用 PDF 文件格式保存具有所需自定义的文档。