2012-03-13 76 views
1

是否可以通过将.MSG文件中的单个附件拖放到C#应用程序上来获取Outlook邮件项目详细信息?我的应用程序当前将.MSG的内容分离到我的应用程序中,但是我想更进一步,并从作为.msg一部分的单个附件中获取发件人,日期/时间等。这是我现在想要的:从.MSG附件中获取邮件项目详细信息

Outlook.Application myApp = new Outlook.Application(); 
object selectedItem = myApp.ActiveExplorer().Selection[1]; 
Outlook.MailItem item = selectedItem as Outlook.MailItem; 
string sender = item.SenderName; 

当我尝试将selectedItem作为Outlook.Mail项目投射时,什么都不会发生。任何帮助,将不胜感激

感谢

克里斯

因为我最初的文章中,我一直在寻找其他的方式,以获得进出口寻找,因为我还没有成功与信息以上方法..

我看了下面的文章http://msdn.microsoft.com/en-us/library/aa219397(v=office.11).aspx并在测试项目中实现了代码。我最初知道我是否可以从附件中获取msg详细信息,但是如果用户从当前打开的邮件拖拽附件,那么我想知道是否可以从ActiveExplorer方法获取邮件详细信息。

在其中点:

myOlSel.Item(x)的.SenderName & “;”

Outlook提示我“一个程序试图访问电子邮件地址...”,但是在此消息框挂起,我无法选择其中一个选项。在做了进一步的阅读后,我明白为什么这是现成的,但无论如何都存在吗?

感谢

克里斯

+0

你的意思是什么都没有发生?如果selectedItem为null,那么你的代码会导致异常。如果selectedItem属于Outlook.MailItem类型,那么您应该能够看到item.SenderName,否则我认为在尝试将selectedItem转换为其他类型时会遇到异常。 如果你调试你的应用程序,然后你能够看到什么类型selectedItem是? – 2012-03-13 10:35:48

+0

感谢您的回复。 SelectedItem将作为System._COMObject返回。然后我添加到以下来获取类型:string type = Microsoft.VisualBasic.Information.TypeName(selectedItem);字符串类型显示为MailItem,但是当我尝试将SelectedItem转换为MailItem时,项目保留为空。 – chrisblue13 2012-03-13 10:52:20

回答

1

也许selectedItem属性为空,因为实际上是没有选择的项目索引1?

我有follwowing的就是在工作(althou它与约会项目)

Inspector activeInspector = this.OutlookApp.ActiveInspector() as Inspector; 
object currentItem = activeInspector.CurrentItem; 
if (currentItem != null && currentItem is AppointmentItem) 
{ 
    AppointmentItem appItem = currentItem as AppointmentItem; 
} 

也许你应该用选择[0]?

+0

我已经尝试过选择[0]但我得到一个数组超出范围异常(我觉得奇怪)。 MSDN exmaple显示它应该是选择[1]。我试图用你的代码片段强制转换COM对象,但是appItem仍然为空。我也使用字符串itemType = Microsoft.VisualBasic.Information.TypeName(selectedItem)检查了currentItem的类型;和itemType = MailItem所以不知道这里发生了什么!再次感谢您的帮助和代码片段Nicklas。 – chrisblue13 2012-03-13 11:49:09

+0

我认为这是你正在使用的VSTO插件,对不对?也许麻烦在于=新的Outlook。Application()调用。如果它是VSTO我认为你应该使用应用程序实例,而不是创建一个新的实例。看到这个MSDN文章:http://msdn.microsoft.com/en-us/library/ms268994(v=vs.100).aspx – 2012-03-13 12:06:36

+0

没有插件,我只是引用Microsoft.Office.Interop 。外表。除非我创建Outlook.Application的新实例,否则无法公开.ActiveExplorer()。选择 – chrisblue13 2012-03-13 12:40:31

相关问题