• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-8-20 17:47:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用在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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap