5

我有一个应用程序,在其中拖放来自文件系统的文件、来自 Outlook 的电子邮件或来自 Outlook 的附件,然后代码将这些文件保存在文件系统文件夹中,以便稍后上传到 SharePoint。

除了当我需要识别FileContents为空的电子邮件附件的内容(即电子邮件嵌入式 MSG 上的电子邮件附件)时,这一切都很好。有什么方法可以访问电子邮件的内容以保存为 .msg 文件?

以下代码片段MemoryStream为不是电子邮件但对于电子邮件类型为空的附件正确创建了一个:

void DoDrop(object sender, DragEventArgs e)
{
    var memoryStream = (MemoryStream) eventArgs.Data.GetData("FileContents", true);
}
4

2 回答 2

0

我无法重现这种行为。我使用了您上面的示例代码,它可以完美地从 Explorer 预览窗格或 Inspector 窗口中拖动嵌入的 MSG。关于嵌入式味精,您肯定没有与我们分享某些内容。附件类型是什么?

我还建议您查看 Outlook Drag-n-Drop 的 CodeProject 示例。您的示例代码不考虑何时将多个项目拖放到应用程序中 - 如果用户选择 (2) 附件、(3) 电子邮件、(5) 文件等,它将仅采用第一个项目。

于 2012-06-13T14:53:08.753 回答
0

我在 vb.net 上有一个扩展的列表框控件,它处理拖放操作,包括来自 Outlook 的电子邮件。我遇到了与您在原始帖子中指出的相同的问题。删除由嵌入的 .msg 文件组成的附件时,GetData 返回为空的 FileContents。目前,我只是向用户显示一条消息,指示他们应该先尝试将附件放在桌面上,然后将其拖到应用程序中。这似乎是可行的,因为 Windows 操作系统负责提取数据并将其存储为 .msg 文件(该文件本身可以正确拖放)。

我还找到了一些关于如何执行此操作的 c# 示例,但在 vb.net 中重新创建它们时没有成功。最有帮助的是 codeproject.com,David Ewen 于 2008 年 7 月 28 日将其称为“C# 中的 Outlook 拖放”。它处理多个附件和 Outlook 邮件附件。由于它是用 C# 编写的,也许您会发现它有些用处。

我知道我通过询问违反了规则,但是如果您找到了比我提供的更好的解决方案,我会很感兴趣。

于 2013-09-12T21:35:33.873 回答