Tag: outlook

Outlook互操作性

当我宣布时, Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); 我收到的错误是 无法嵌入“Microsoft.Office.Interop.Outlook.ApplicationClass”。 请改用适用的界面。 和 类型’Microsoft.Office.Interop.Outlook.ApplicationClass’没有定义构造函数 解决办法是什么?

钩子事件Outlook VSTO在主线程上继续工作

我开发了一个Outlook VSTO插件。 有些任务应该在后台线程上完成。 通常,检查本地数据库中的某些内容或调用Web请求。 在阅读了几篇文章之后,我放弃了在后台线程中调用Outlook对象模型(OOM)的想法。 我有一些wpf控件,我成功地设法使用.NET 40 TPL执行异步任务,并在完成时“完成”主VSTA线程中的作业(即访问UI或OOM)。 为此,我使用以下forms的语法: Task task = Task.Factory.StartNew(()=>{ //Do long tasks that have nothing to do with UI or OOM return SomeResult(); }); //now I need to access the OOM task.ContinueWith((Task tsk) =>{ //Do something clever using SomeResult that uses the OOM },TaskScheduler.FromCurrentSynchronizationContext()); 到现在为止还挺好。 但是现在我想在OOM中挂钩没有Form / WPF控件的事件时做类似的事情。 确切地说,我的问题来自于TaskScheduler.FromCurrentSynchronizationContext()抛出exception的事实。 例如, Items […]

C#将邮件移至PST

我想使用C#访问我的Outlook发送文件夹,并将邮件移动到我的PST中名为Archive的文件夹中。 这是我正在使用的代码,但是我遇到了多个编译错误。 这里有更多编码经验的人知道如何实现这一目标吗? static void MoveMe() { try { _app = new Microsoft.Office.Interop.Outlook.Application(); _ns = _app.GetNamespace(“MAPI”); _ns.Logon(null, null, false, false); Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderOutbox); Outlook.Items SentMailItems = SentMail.Items; Outlook.MailItem newEmail = null; foreach (object collectionItem in SentMailItems) { moveMail.Move(Archive); } } catch (System.Runtime.InteropServices.COMException ex) { Console.WriteLine(ex.ToString()); } finally { _ns = null; _app = null; _inboxFolder = null; […]

如何打开Outlook收到并阅读电子邮件

我们有5个人使用相同的电子邮件通过Outlook回复我们的客户。 我想提出一个程序来打开所有已发送的电子邮件,阅读它们( 打开它们 ),找到第一个人的签名,并在他/她的计数器中添加一个数字,以便我可以得出一些统计数据。 关于如何打开通过C#收到的Outlook的电子邮件并解析它们的任何想法( 阅读 )? 你认为这是我问题的正确答案吗? 请帮我。

将Outlook MSG文件转换为EML文件的第三方实用程序

我有一个应用程序,允许人们将文件附加到记录。 有些用户正在上传与相关记录相关的电子邮件。 一切都很好,花花公子。 但是,有些用户正在使用MS Outlook并正在上传MSG文件,而其他用户正在使用thunderbird并上传EML文件。 理想情况下,我希望所有用户都可以上传EML文件,因为它们可以互操作,也可以在移动设备上运行。 我希望通过扩展程序或MIME类型检测上传的MSG并转换为EML而不是存储它。 这对用户是透明的,因为Outlook可以愉快地打开EML文件。 有没有人知道我可以打电话给我的(理想的免费)第三方命令行实用工具? 或者是否有我可用于将MSG转换为EML的ac#代码块? 谢谢

让Outlook识别我的数字签名电子邮件

我使用C#.NET 4.0发送签名的SMTP邮件,如下所示: private void SendMailMessage(object data) { MailMessage message = new MailMessage(); message.From = new MailAddress(fromAddress); message.To.Add(new MailAddress(emailTo)); message.Subject = “Subject”; message.IsBodyHtml = true; message.Body += “Blah blah blah.”; byte[] messageBytes = Encoding.ASCII.GetBytes(message.Body); SignedCms Cms = new SignedCms(new ContentInfo(messageBytes)); CmsSigner Signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, certificate); Cms.ComputeSignature(Signer); byte[] SignedBytes = Cms.Encode(); MemoryStream signedStream = new MemoryStream(SignedBytes); […]

关于COM Interop对象的思考

尝试为POCO创建一个Microsoft Office对象的映射器并找到它 // doesn’t work // returns an empty array where o is a RCW on an office object foreach(var pi in o.GetType().GetProperties() ) tgt.SetValue(rc, pi.GetValue(o, null)); 所以不得不求助于此 foreach(var field in tgt.GetFields() ){ var pv = o.InvokeMember(field.Name, System.Reflection.BindingFlags.GetProperty, null, o, null); i.SetValue(rc, pv); } 它现在有效,但想知道为什么RCW.GetProperties()在这里不起作用?

如何将WordOpenXML属性转换为System.IO.Packaging.Package?

我一直在尝试使用Visual Studio 2008在C#中构建Outlook 2010插件。我能够从Microsoft.Office.Interop.Outlook.Inspector对象获取Microsoft.Office.Interop.Outlook.Inspector对象,它表示当前正在编辑的电子邮件。 据我所知,这个DocumentClass也用于其他各种情况(通常用于Microsoft Word扩展,不出所料)。 该类有一个名为WordOpenXML的属性,它似乎是构成.docx包的所有文件的XML表示forms,在将此Word文档另存为.docx将保存到磁盘。 这个属性非常有用的一种方法是它是否可以在内存中转换为System.IO.Packaging.Package对象; 即。 反序列化它。 有谁知道是否有一种简单的方法可以做到这一点,还是我需要编写一些XML解析代码来手动完成它?

更改outlook MailItem图标

我正在开发一个outlook 2010插件,当用户单击菜单中的按钮时,该插件会将电子邮件导出到特定位置。 这部分不是问题,但如果导出成功,我还需要更改MailItem图标 – 象形图。 我试图寻找解决方案,但我只是得到我需要使用表单区域 ,但我没有找到真正有用的解决方案。 任何想法我应该如何使用这个表单区域?! 我完成了加载项,从VS 2010调试时,一切似乎都很完美。我还创建了一个安装程序,但在安装应用程序后,Outlook将不会显示我想要的图标。 它不是显示你上面看到的内容,而是更改图标,但显示默认图标 – 而不是我的图标。 图标位于我使用的FormRegion的resx文件中(我使用dor默认和从清单中读取图标),我也尝试将它们移动到一般资源文件(Properties.Resource),但结果是相同的。 有人可以帮我弄这个吗? 所以我使用Replacement和ReplaceAll添加了一个FormRegion,在清单上的默认图标上添加了我的图标,并将其命名为IPM.Note.MyExportedItem。 在ThisAddin.cs中,我有以下代码: MailItem mailItem =(selectedItem as MailItem); itemGuid = mailItem.EntryID; string name = mailItem.Subject + “.msg”; name = “C:\\” + name.Replace(“:”, “”); try { mailItem.SaveAs(name, OlSaveAsType.olMSG); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } mailItem.MessageClass = “IPM.Note.MyExportedItem”; mailItem.Display(true); …….. 但是,当我按照我想要的方式导出它时,这不会将邮箱中的mailItem(电子邮件)图标更改为我的图标,我可以看到的唯一更改是当我调用Display(true)并打开邮件消息时。 此外,如果我按下新项目,选择表格并打开我的表格区域,它会打开一个撰写邮件窗口,如果我发送电子邮件给我,那么它将有我的图标……很奇怪…你可以在图片中看到:-)你知道我做错了什么吗? […]

用c#启动Outlook

我可以在代码中使用C#启动Outlook吗? 在VB6中,我们使用对象’Outlook.Application’并写:’ Set oOutlook = CreateObject(“Outlook.Application”) Set oNameSpace = oOutlook.GetNamespace(“MAPI”) Set oInbox = oNameSpace.Folders(1) ‘Set oInbox = oInbox.Folders(“Inbox”) oInbox.Display ‘oOutlook.Quit ‘Close All Outlook copies 复制/粘贴链接: http ://www.ozgrid.com/forum/showthread.php?t = 73886