VirtualFileDataObject 实现不适用于 Outlook 365
VirtualFileDataObject implementation does not work for Outlook 365
我已经按照 here 找到的示例进行操作。它实现 IDataObject 接口以创建 "virtual file" 数据对象。当 d/d 虚拟文件从 WPF 应用程序到文件系统和 outlook 电子邮件(文件附加到电子邮件)时,实现工作得很好。我最近更新到 Outlook 365,突然它停止工作,调试代码显示该进程实际执行下载文件的功能,但这些文件从未显示为电子邮件中的附件。
有人知道 d/d 从 outlook 处理的方式在 365 中是否改变了吗?请任何提示。
可以找到 VirtualFileDataObject class 的代码 here
这是使用检索虚拟文件的函数设置 FileDescriptor 列表的代码:
VirtualFileDataObject.FileDescriptor[] files = new VirtualFileDataObject.FileDescriptor[myItems.Count];
for (int i = 0; i < myItems.Count; i++)
{
var name = myItems[i].ItemName;
files.SetValue(
new VirtualFileDataObject.FileDescriptor
{
Name = name,
StreamContents = stream =>
{
try
{
using (var webClient = new WebClient())
{
var data = webClient.DownloadData(myItems[i].Url);
stream.Write(data, 0, data.Length);
}
}
catch (Exception ex)
{
MessageBox.Show($"File '{name}' could not be copied.\n{ex.Message}", "Drag and Drop", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}, i);
}
virtualFileDataObject.SetData(files);
此问题仅出现在 Outlook 365 版本 2004 中。将 Office 365 更新到以下版本后,问题完全消失。