1

我正在努力允许从电子邮件的主题行拖放 Outlook 附件。为此,我需要将文件作为 RenPrivateItem 处理。一切正常,但我希望有人可以在 .NET 或其他环境中定义“RenPrivateItem”格式。

我想知道为什么我的代码有效,但我无法通过网络搜索找到有关此格式的任何进一步信息。

此外,我正在使用 Visual Studio 2012 和 Outlook 2007。

编辑:

我对处理 DragDrop 的过程有些不熟悉,但我猜测只有某些类型的文档应该由它处理。我得到了一个当前有效的文件示例(电子邮件正文中包含的附件​​ .pdf)和一个无效的示例(电子邮件主题行中包含的附件​​ .pdf)。工作示例在以下行返回 true 并进行处理:

ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Rtf, False) Then

下面代码块中可见的任何情况都不会处理不起作用的示例。我的任务是弄清楚为什么它不起作用(它是同一个文件,只是附加到不同位置的电子邮件中)。由于我不明白我收到的文件格式是什么,除了 .rtf,我发现很难知道如何处理另一种情况:

Shared Sub ProcessOutlookDrop(ByVal idoData As Windows.Forms.IDataObject, ByVal
                          iIdReport As Integer, ByVal iIdFileReference As Integer)

  If idoData.GetDataPresent("RenPrivateFileAttachments") Then
     byFile = getFiledataArrayFromFileContents(idoData)
  ElseIf idoData.GetDataPresent("RenPrivateItem") Then   ' ADDED BY ME
     byFile = getFiledataArrayFromFileContents(idoData)  ' ADDED BY ME
  ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Rtf, False) Then
     byFile = getFiledataArrayFromFileContents(idoData)
  ElseIf idoData.GetDataPresent(System.Windows.Forms.DataFormats.Text, False) Then
     byFile = getMessagedataArrayFromOutlook(idoData)
  End If

对于工作示例(正文中的 .pdf 附件),我得到以下格式:Woozle、对象描述符、富文本格式、HtmlFormat、EnhancedMetafile、MetaFilePict、DeviceIndependentBitmap、System.Drawing.Bitmap、Bitmap、Embedded Object、FileGroupDescriptor、FileContents

对于损坏的示例(主题行中的 .pdf 附件),我得到以下格式:FileGroupDescriptorW、FileGroupDescriptor、RenPrivateItem、FileContents

除了我最初的问题之外,为什么这些文件的处理方式如此不同?

4

1 回答 1

0

RenPrivateItem数据格式不是 .NET 特定的。这是 Outlook 用来跟踪其自己的项目的一种未记录的私有格式。与外界无关;只有FileGroupDescriptorWFileGroupDescriptorFileContents是相关的。

这就是名称中包含“私人”一词的原因。这就是当应用程序想要将私有数据与拖放操作相关联时的样子。我自己的应用程序会这样做。

于 2015-11-19T20:19:04.970 回答