我正在使用在Windows .NET 3.5 Sp1上用C#用WPF编写的Windows客户端,其中要求将来自客户端接收的电子邮件中的数据存储在数据库中。现在,处理此问题的最简单方法是使用引起关节炎的数量ctrl-c/ctrl-v复制和粘贴手动接收的文本,主题,联系信息和时间。
我认为一种简单的处理方法是允许用户将Outlook中的一封或多封电子邮件(当前都使用Outlook 2007)拖到窗口中,从而允许我的应用提取必要的信息并将其发送到后端存储系统。
但是,花了几个小时搜索有关此信息的信息,似乎表明有关此看似基本任务的信息令人震惊地缺乏。我认为类似这样的东西在许多不同的设置中都会有用,但是到目前为止我所能找到的只是半熟的非解决方案。
有人对此有任何建议吗?由于我只是阅读邮件,而不发送任何内容或做任何不道德的事情,因此采用不涉及讨厌的安全弹出窗口的解决方案会很不错,但是任何事情都无法做到这一点。
基本上,如果我可以获得从Outlook中选择,拖放的所有邮件项目的列表,我将自己处理其余的邮件!
谢谢!
rune
Best Answer-推荐答案 strong>
我发现了一个很棒的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/
|