OStack程序员社区-中国程序员成长平台

标题: c# - 将一个或多个邮件从Outlook拖放到C#WPF应用程序 [打印本页]

作者: 菜鸟教程小白    时间: 2022-8-20 17:47
标题: c# - 将一个或多个邮件从Outlook拖放到C#WPF应用程序

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

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

但是,花了几个小时搜索有关此信息的信息,似乎表明有关此看似基本任务的信息令人震惊地缺乏。我认为类似这样的东西在许多不同的设置中都会有用,但是到目前为止我所能找到的只是半熟的非解决方案。

有人对此有任何建议吗?由于我只是阅读邮件,而不发送任何内容或做任何不道德的事情,因此采用不涉及讨厌的安全弹出窗口的解决方案会很不错,但是任何事情都无法做到这一点。

基本上,如果我可以获得从Outlook中选择,拖放的所有邮件项目的列表,我将自己处理其余的邮件!

谢谢!

rune



Best Answer-推荐答案


我发现了一个很棒的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/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4