2

我已按照此处找到的示例进行操作。它实现 IDataObject 接口以创建“虚拟文件”数据对象。当将虚拟文件从 WPF 应用程序 d/d 到文件系统和 Outlook 电子邮件(文件附加到电子邮件)时,该实现工作得很好。我最近更新到 Outlook 365,但它突然停止工作,调试代码显示该过程实际上执行了下载文件的功能,但这些文件从未在电子邮件中显示为附件。

有人知道365中从Outlook处理d / d的方式是否改变了吗?请,任何提示。

VirtualFileDataObject 类的代码可以在这里找到

这是使用检索虚拟文件的函数设置 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);
4

1 回答 1

0

此问题仅存在于 Outlook 365 版本 2004 中。将 Office 365 更新到以下版本后,此问题完全消失。

于 2021-04-25T12:08:30.193 回答