Tag: outlook

如何将Outlook中的电子邮件拖放到.NET应用程序中?

我试图弄清楚如何将Outlook 2010中的电子邮件拖放到我的.NET应用程序中。 我见过很多文章,大多数都有非常复杂的解决方案。 我的想法是不应该那么复杂……但我可能是错的。 任何帮助将非常感激!

Outlook Mapi访问共享联系人

我想通过Mapi从Outllok导入联系人。 标准联系的第一步没有问题: MAPIFolder contactObjects = outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts); foreach (ContactItem contactObject in contactObjects.Items) { … import contact … } 在第二步中,我还想要导入共享联系人。 我发现只有使用 OpenSharedItem(sharedContacts.vcf) 但我不知道我要打开的文件(共享项)的名称。 有人知道如何访问共享联系人并可以帮助我吗? 托比 更新: 感谢vcf-Files的提示。 但是我在哪里可以找到它们? UPDATE2: 我玩OutlookSpy。 我可以访问具有共享联系人的文件夹,但只能通过知道ID(当然其他用户不同): var ns = outlookObj.GetNamespace(“MAPI”); var flr = ns.GetFolderFromID(“00000000176A90DED92CE6439C1CB89AFE3668F90100D1AD8F66B576B54FB731302D9BB9F6C40007E4BAC5020000”); foreach (var contactObject in flr.Items) { … } 如何在不知道ID的情况下访问该文件夹?

Outlook中的XMLfunction区 – 使其显示在特定窗口中

我正在尝试使用XML在Outlook中创建function区,并且无法找到具体如何告诉我的加载项我只希望function区出现在Explorer窗口中。 建议吗? 谢谢。 我的Ribbon1.XML文件: 弹出的神奇错误框说: testingOLaddin2中的CustomUI运行时错误 Error found in CustomUI XML of “testingOLaddin2” Line: 3 Column: 10 Error Code 0x80004005 Failed to find Office control by ID ID: TabMail 每个请求,我的function区生成代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Office = Microsoft.Office.Core; using System.Diagnostics; namespace testingOLaddin2 { [ComVisible(true)] public […]

如何在没有Outlook的情况下通过邮件发送Outlook任务请求?

我需要复制Outlookfunction/function以将某些任务请求发送给某人( 请参阅此处 ),但使用ASP.NET C#从Web服务器发送邮件,并且不在Web服务器上安装Outlook(因此无法使用Outlook自动化)。 我已经检查了执行此操作的可能性,似乎将任务发送给某人的常见方法是生成iCalendar格式的.ics文件,并将该文件包含在邮件中( 请参阅此stackoverflow问题 )。 它工作得很好,但是outlook没有发送任务的等价性: 事件(VEVENT)有一个开始日期和结束日期(如任务)但没有“完成”字段(这是有意义的,因为它是一个事件,而不是一个任务)。 Todos(VTODO)只有截止日期,没有开始日期或结束日期, 并且outlook不支持它 。 我检查了Outlook在包含任务请求的邮件中确切发送的content-type:application/ms-tnef :它包含一个winmail.dat文件( content-type:application/ms-tnef )编码为Base64 。 在该文件(这是一个二进制文件)中,有一个对IPM.TaskRequest的引用,这似乎是我需要的。 我检查了网络并找到了一些TNEF解析器,但我需要oposite: 从C#代码生成一个包含任务请求的TNEF文件 。 我想知道是否有办法做到这一点。 使用库(免费或不免费)不是问题。

Outlook VSTOfunction区到主页tabControlId

我正在写一个VSTO Microsoft Outlook插件。 该插件的版本目标是Outlook 2007和2010,因此我使用Outlook 2007加载项(在Visual Studio中)。 我有ActiveMenuBar的一些(视觉)问题。 在Outlook 2007中,它工作正常,但在2010年,ActiveMenuBar不存在; 它被tabControl和ribbon替换。 我想检查版本( Application.Version ),如果版本是14(Outlook 2010),则不要在ActiveMenuBar中添加项目,而是在Home标签页中添加function区。 如何将function区添加到“ 主页”选项卡页面? 例如,如果我将一个function区添加到“ 消息”选项卡页面,我将ribbonControl.OfficeId设置为“TabReadMessage”,但我找不到“ 主页”选项卡的OfficeId。

仅保存Outlook MailItem的REAL附件

我目前正在开发一个Outlook Addin,它可以在我的MSSQL数据库中保存MailItems和Attachments。 我有一个方法,我用它的所有附件保存MailItem。 但是,如果我保存所有附件,也会保存MailItem中的嵌入图像。 有谁知道如何保存所有真正的附件? 我的意思是像下图中的附件: 而不是邮件正文中的嵌入图像。 这是我用来循环遍历MailItem的所有附件然后保存它的代码: foreach (Outlook.Attachment att in mailItem.Attachments) { try { att.SaveAsFile(Path.GetTempPath() + att.FileName); var fi = new FileInfo(Path.GetTempPath() + att.FileName); //Saving attachment to DB var attachment = Attachment.NieuwAttachment(att.FileName, SelectedMap.DossierNr.ToString( CultureInfo.InvariantCulture), -1, Convert.ToInt32(SelectedMap.Tag), fi); if (!Attachment.InlezenAttachment(attachment)) continue; OutlookCategories.AddAttachmentCategory(mailItem); } catch (Exception ex) { var dmsEx = new DmsException(“Er is een […]

使用C#发送Outlook会议请求

我期待从C#发送Outlook会议请求。 我有下面的代码,它可以完成这项工作但是。 string startTime1 = Convert.ToDateTime(startTime).ToString(“yyyyMMddTHHmmssZ”); string endTime1 = Convert.ToDateTime(endTime).ToString(“yyyyMMddTHHmmssZ”); SmtpClient sc = new SmtpClient(“”); MailMessage msg = new MailMessage(); msg.From = new MailAddress(“”, “HR Self Service”); msg.To.Add(new MailAddress(emailto)); msg.Subject = “Holiday Approval”; msg.Body = emailbody; StringBuilder str = new StringBuilder(); str.AppendLine(“BEGIN:VCALENDAR”); //PRODID: identifier for the product that created the Calendar object str.AppendLine(“PRODID:-//ABC Company//Outlook MIMEDIR//EN”); […]

替换现有的Outlook日历约会

我正在做一个icalndar预约一代的工作; 这将允许代表查看活动的网站,并单击提供的链接以将约会添加到他们的日历。 我有一个工作程序集,它将根据一组已知的信息(开始日期,结束日期,标题等)生成一个ics格式的输出(作为物理文件或流)。 我为日历约会生成的输出示例如下: BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN VERSION:2.0 METHOD:PUBLISH X-MS-OLK-FORCEINSPECTOROPEN:TRUE BEGIN:VEVENT CLASS:PUBLIC CREATED:20110210T124703Z DESCRIPTION:Anything Else\n\nHopefully some useful information would be written here\n DTEND:20110212T100000Z DTSTAMP:20110210T124600Z DTSTART:20110212T090000Z LAST-MODIFIED:20110210T124703Z LOCATION:Dummy Location PRIORITY:5 SEQUENCE:0 SUMMARY;LANGUAGE=en-us:Dummy Meeting TRANSP:OPAQUE UID:040000008200E00074C5B7101A82E00800000000B0D1061C57C8CB01000000000000000 010000000281117EDC1194242B64F0247C54DB401 X-ALT-DESC;FMTTYPE=text/html:\n\n\n\n\nDummy Meeting\n\n\n\n\n&lt\;h1&gt\;Anyt hing Else&lt\;/h1&gt\;&lt\;p&gt\;Hopefully some useful information would b e written here&lt\;/p&gt\;\n\n\n\n\n X-MICROSOFT-CDO-BUSYSTATUS:BUSY X-MICROSOFT-CDO-IMPORTANCE:1 END:VEVENT END:VCALENDAR 我被问到的是; 是否可以更改约会,但下次有人请求提醒时,它会检测到他们的日历中已存在的约会并更新它而不是创建新条目? […]

Outlook.Folder和Outlok.MAPIFolder之间的区别

我不清楚命名空间Outlook的类和MAPIFolder类之间的区别。 当我查看网络中的代码时,有些人使用第一个,而其他人使用其他语法,我无法确定是否: 这只是因为他们的无知(甚至更少,我可以分辨哪个群体是正确的) 它是某种遗留(用于不同版本的Outlook) 这是完全相同的事情(我确信这不是真的,但我不知道) 它是一个inheritance结构(以及什么时候使用) 它只是一种避免类型问题的方法(强制转换和asing) 完全是其他原因(如果是这样的话) 这是我用来获取这两个代码的代码。 Outlook.Folder defaultContactsFolder_1 = this.Application.Session.GetDefaultFolder( Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder; Outlook.MAPIFolder defaultContactFolder_2 = this.Application.GetNamespace(“MAPI”).GetDefaultFolder( Outlook.OlDefaultFolders.olFolderContacts);

Outlook 2007的共享加载项捕获ReplyToAll事件

我正在使用VS 2010和Dot Net Framework 2.0。 我在Extensibility-> Outlook的共享加载项中创建了一个项目。 我试图捕获ReplyToAll事件它没有被解雇。 请看下面的代码: OnConnection方法 inspectors = applicationObject.Inspectors; inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(inspectors_NewInspector); void inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) { mailItem = null; try { Outlook.NameSpace ns = Inspector.Session; Outlook.MAPIFolder inbox = ns.GetDefaultFolder( Outlook.OlDefaultFolders.olFolderInbox); foreach (object o in inbox.Items) { mailItem = o as Outlook.MailItem; if (mailItem != null) { break; } } if […]