复制电子邮件正文(HTML 格式)到 AppointmentItem

问题描述 投票:0回答:0

我为 Outlook 编写了一个 VSTO 插件。我在公司的 Microsoft Exchange 环境中使用 Office 365。 在加载项的功能中,我想将一封电子邮件(HTML 格式)的完整内容(还包含一个表格)复制到 AppointmentItem 的正文中。 我遵循了这篇文章Copy Email Body to EventItem or Appointmentitem Body 1:1 中的建议,并为此使用了 Word 对象模型。

这是我的代码:

    Sub CopyHtmlBodyfromMailToAppointment(CurrentMail As MailItem, CurrenAppointment As AppointmentItem)

            CurrenAppointment.Display()  ' has to be displayed, in order to make copy and past work!
            CurrentMail.BodyFormat = OlBodyFormat.olFormatHTML
            CurrenAppointment.BodyFormat = OlBodyFormat.olFormatHTML
            Dim objWordDocumentMail As Microsoft.Office.Interop.Word.Document = CurrentMail.GetInspector.WordEditor

            objWordDocumentMail.Range.Copy()

            Dim objWordDocumentAppointment As Microsoft.Office.Interop.Word.Document = CurrenAppointment.GetInspector.WordEditor
            Call objWordDocumentAppointment.Range.PasteSpecial(DataType:=Microsoft.Office.Interop.Word.WdPasteDataType.wdPasteHTML)
    End Sub

我的问题是,有时没有复制完整的电子邮件内容。有时有效,有时无效。例如,如果我使用与源相同的电子邮件连续调用该函数 5 次,它完美地工作了 2 次和 3 次直到电子邮件结束才复制内容。 开头总是在那里,但它会在中间的任何地方被切断。

我能够确定问题已经出在

objWordDocumentMail.Range.Copy()
命令。如果我在命令后设置一个断点,然后将剪贴板的内容粘贴到 Word 中,我会看到没有复制整个正文。 我怀疑范围对象不一定包含电子邮件的整个正文。 我测试了范围规格,例如范围(0,200)。然后总是复制这个固定数量的字符。 如果我指定的长度大于电子邮件正文,我会收到一条错误消息。由于我不知道电子邮件正文的确切长度,所以我现在无法进一步了解。

有人对我如何始终可靠地将整个电子邮件正文转移到预约正文有什么建议吗?

outlook office365 vsto outlook-addin
© www.soinside.com 2019 - 2024. All rights reserved.