gpt4 book ai didi

c# - 将一封或多封邮件从 Outlook 拖放到 C# WPF 应用程序

转载 作者:IT王子 更新时间:2023-10-29 04:08:02 24 4
gpt4 key购买 nike

我正在使用 WPF 和 C# 在 .Net 3.5 Sp1 上编写 Windows 客户端,其中要求客户端收到的电子邮件中的数据可以存储在数据库中。现在,处理此问题的最简单方法是使用会引发关节炎的 ctrl-c/ctrl-v 手动复制并粘贴文本、主题、联系信息和时间。

我认为处理此问题的一种简单方法是允许用户将一封或多封电子邮件从 Outlook(他们目前都在使用 Outlook 2007)拖到窗口中,允许我的应用程序提取必要的信息并发送到后端系统进行存储。

但是,在谷歌上搜索了几个小时的相关信息后,似乎发现关于这个看似基本的任务的信息非常缺乏。我认为像这样的东西在很多不同的设置中都会有用,但到目前为止我能找到的都是半生不熟的非解决方案。

有没有人对如何做到这一点有任何建议?因为我只是要阅读邮件而不是发送任何东西或做任何坏事,所以如果有一个不涉及讨厌的安全弹出窗口的解决方案会很好,但任何事情都胜过根本无法做到这一点。

基本上,如果我能获得从 Outlook 中选择、拖放的所有邮件项目的列表,我就可以自己处理剩下的事情了!

谢谢!

rune

最佳答案

我找到了一个很棒的 article那应该完全满足您的需求。

更新

我能够通过一些调整使那篇文章中的代码在 WPF 中工作,下面是您需要进行的更改。

将所有引用从 System.Windows.Forms.IDataObject 更改为 System.Windows.IDataObject

在 OutlookDataObject 构造函数中,更改

FieldInfo innerDataField = this.underlyingDataObject.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance);

FieldInfo innerDataField = this.underlyingDataObject.GetType().GetField("_innerData", BindingFlags.NonPublic | BindingFlags.Instance);

将所有 DataFormats.GetFormat 调用更改为 DataFormats.GetDataFormat

更改 SetData 实现

public void SetData(string format, bool autoConvert, object data)
{
this.underlyingDataObject.SetData(format, autoConvert, data);
}

public void SetData(string format, object data, bool autoConvert)
{
this.underlyingDataObject.SetData(format, data, autoConvert);
}

通过这些更改,我能够像文章那样将消息保存到文件中。很抱歉格式化,但编号/项目符号列表不适用于代码片段。

关于c# - 将一封或多封邮件从 Outlook 拖放到 C# WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com