当前位置: 首页 > 编程语言 > C#

从Outlook电子邮件中获取文本Share

时间:2023-04-10 15:35:35 C#

从Outlook电子邮件中获取文本在此文本框中,我想获取从Outlook中拖出的电子邮件的文本。代码有效,但我认为我需要一些东西来“重置”ActiveExplorer,因为它现在只显示我拖到文本框中的最后一封“新”电子邮件。示例:拖动电子邮件1->文本框-显示电子邮件1拖动电子邮件2->文本框-显示电子邮件2拖动电子邮件1->文本框-显示电子邮件2,电子邮件1不会显示,因为它已经存在于ActiveExplorer中,它会显示电子邮件2.希望我的问题对您来说有点清楚..在此先感谢!XAML代码:XAML代码隐藏:privatevoidemail_DragEnter(objectsender,DragEventArgse){e.Effect=DragDropEffects.Copy;}privatevoidemail_Drop(objectsender,DragEventArgse){Outlook.ApplicationClassoApp=newOutlook.ApplicationClass();Outlook.ExploreroExplorer=oApp.ActiveExplorer();Outlook.SelectionoSelection=oExplorer.Selection;foreach(oSelection中的对象项){Outlook.MailItemmi=(Outlook.MailItem)item;myTextbox.Text=mi.Body.ToString();我将oApp的声明从DragDrop事件中移出,如下所示,它按预期工作。voidStartup(){_Outlook=newOutlook.Application();}Outlook.Application_Outlook=null;privatevoidForm1_DragEnter(objectsender,DragEventArgse){e.Effect=DragDropEffects.Copy;}privatevoidForm1_DragDrop(objectsender,DragEventArgse){richTextBox1.Text="";Outlook.ExploreroExplorer=_Outlook.ActiveExplorer();Outlook.SelectionoSelection=oExplorer.Selection;foreach(oSelection中的对象项){Outlook.MailItemmi=(Outlook.MailItem)item;richTextBox1.AppendText(mi.Body.ToString()+"n----------------------------------------n");}}––––编辑––––或者您是否有可能因为这个循环而只显示最后一项?foreach(oSelection中的对象项){Outlook.MailItemmi=(Outlook.MailItem)item;myTextbox.Text=mi.Body.ToString();//我更新了LB的答案。他的DragEnterEventHandler自动假设用户从Outlook中删除了一些东西。结果是,如果用户删除了其他内容(文件、选定的文本……),代码仍会查看Outlook中当前选定的电子邮件,而忽略实际删除的内容。代码:Private_OutlookAsOutlook.Application=NothingPrivateSubForm_Load(ByValsenderAsObject,ByValeAsEventArgs)HandlesMyBase.Load_Outlook=NewOutlook.Application()EndSubPrivateSubForm_DragEnter(ByValsenderAsObject,ByValeAsDragEventArgs)HandlesMe.DragEnterDimoutlookRequiredFormats=NewString(){_"RenPrivateSourceFolder",_"RenPrivateMessages",_"RenPrivateItem",_"FileGroupDescriptor",_"FileGroupDescriptorW",_"FileContents",_"对象描述符"}如果outlookRequiredFormats.All(Function(requiredFormat)e.Data.GetDataPresent(requiredFormat))Thene.Effect=DragDropEffects.CopyElsee.Effect=DragDropEffects.NoneEndIfEndSubPrivateSubForm_DragDrop(ByValsenderAsObject,ByValeAsDragEventArgs)HandlesMe.DragDropDimoExplorerAsOutlook.Explorer=_Outlook.ActiveExplorer()DimoSelectionAsOutlook.Selection=oExplorer.SelectionDimiAsInteger=0对于每个项目作为oSelectionDimmi中的对象AsOutlook.MailItem=DirectCast(item,Outlook.MailItem)mi.SaveAs("C:YourPathmessage"&i&".msg")i+=1接下来将选中的Outlook项直接投射到Outlook.MailItem因此,代码为仅适用于实际电子邮件。它还可以处理Outlook.MeetingItem、Outlook.ContactItem、Outlook.NoteItem等。使用14.0.0.0版的Microsoft.Office.Interop.Outlook.dll,我无法使用Outlook.ApplicationClass对象。相反,我在您提供的示例中使用了Outlook.Application,它非常有效(使用Windows7和Outlook2007SP2进行了测试)。我可以随意拖放电子邮件。PS:ApplicationClass类的MSDN摘录:“此类支持.NETFramework基础结构,不能直接在您的代码中使用。”并且需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: