我正在制作一个outlook插件,我正试图找到一种方法来查看选择了哪些电子邮件,然后能够通过foreach(或其他)使用它们.如果这不可能,有没有办法获取文件夹中的所有项目并轻松访问该信息?之后我需要将这些项目移动到另一个文件夹.
我该怎么做呢?
我即将开发一些Outlook加载项.我做这件事已经好几年了; 可能还有几个对象模型修改版!
任何人都可以推荐一些参考资料来帮助我入门:博客,网站,书籍?
谢谢
我目前正在使用EWS将我们公司的应用程序与Exchange 2010集成在一起.我正在使用EWS创建对Exchange 2010的任命,它运行正常; 但最近我尝试在创建约会时添加一些自定义/扩展属性,下面是我添加扩展属性的代码.
Dim customField As New ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomField", MapiPropertyType.String)
appointment.SetExtendedProperty(customField, "CustomFieldValue")
Run Code Online (Sandbox Code Playgroud)
以上代码能够为约会创建自定义字段.
现在这是我的问题.当我打开我创建的Outlook中的约会并转到"开发人员>设计此表单",然后转到"所有字段"选项卡时,我只看到我在"文件夹中的用户定义字段"中创建的自定义字段,但不是"此项中用户定义的字段".
我还制作一个Outlook加载项,以便在用户在Outlook中打开约会时使用EWS创建自定义字段,当我尝试查找自定义字段时,无法找到自定义字段,因为自定义字段在"文件夹中的用户定义的字段"中创建,但不在"此项目中的用户定义的字段"中创建.
这是Outlook加载项中的代码,将在用户在Outlook中打开apointment时执行.但由于自定义字段不在"此项目中",因此.Find()返回Nothing.
Dim appt As Outlook.AppointmentItem
appt = TryCast(inspector.CurrentItem, Outlook.AppointmentItem)
If appt.UserProperties.Find("MyCustomField") Is Nothing Then
'Some action
Else
'Some action
End If
Run Code Online (Sandbox Code Playgroud)
我想要实现的是使用EWS创建自定义字段(扩展属性)的约会,然后在用户在Outlook中打开约会时读取Outlook加载项中的自定义字段(扩展属性).
编辑:
我使用EWS分配给自定义字段的值显示在"文件夹中的用户定义字段"中.如何从Outlook加载项中检索值?也许我可以检索值并将自定义字段添加到项目并使用值?
谢谢.
delphi extended-properties exchange-server user-defined-fields outlook-addin
从Visual Studio 2010构建Outlook 2007插件的安装项目时出现此错误.
安装项目没有什么复杂的,只是使用标准机制.
我知道它无法找到该文件.什么是normnfc.nlp?它有什么作用?我在哪里可以找到它?
目前正在使用Add-in Express开发Outlook加载项,我必须恢复一些纯MAPI函数来读取MAPI属性.
将此P/Invoke包装器添加到HrGetOneProp函数中:
[DllImport(@"MAPI32.DLL")]
static extern int HrGetOneProp(IntPtr pmp, uint ulPropTag, out IntPtr ppProp);
Run Code Online (Sandbox Code Playgroud)
我正在尝试将类型的Outlook附件对象IMAPIProp作为第一个参数传递给函数.
我目前失败的是如何将该对象"转换"为一个,IntPtr以便我可以将它作为函数的第一个参数传递给我.我试图使用,Marshal.StructureToPtr但显然这失败了一个例外,因为我没有传递结构,而只是一个非托管COM对象的引用.
所以我的问题是:
如何HrGetOneProp通过传递COM对象成功调用该方法?
我正在MailItem.SendUsingAccount用来获取发件人的地址.但是当我尝试发送草稿邮件时,SendUsingAccount变为空,但SenderEmailAddress仍然有价值(但不是电子邮件地址,它是Exchange属性).
那么为什么SendUsingAccount是null?有没有其他方法来获取发件人的电子邮件地址?
我们有一个C#Outlook加载项,允许最终用户单击功能区中的一个按钮以在新电子邮件中插入一些内容.我们正在使用MailItem.GetInspector.WordEditor来执行此操作.然而,奇怪的是我们的程序无法一直获得WordEditor.到目前为止,它只在我的机器上.
我们会像这样得到例外
System.Runtime.InteropServices.COMException (0x9CD04005): The operation failed.
at Microsoft.Office.Interop.Outlook._Inspector.get_WordEditor()
Run Code Online (Sandbox Code Playgroud)
最后4位数字总是4005,而前4位数字可能会改变.前4个应该引用发生错误的组件.
我在我的机器上安装了outlookspy,它也无法获得WordEditor.

我通过互联网进行了一些搜索并发现了这个链接:system.Runtime.InteropServices.COMException(0xB5904005):操作失败,因此它表明我们会在Activate事件上获取WordEditor以确保WordEditor完全初始化,但是在新的电子邮件,它应该已经根据我们的理解激活,除非我们在这里遗漏了一些东西 另外,我在一封新邮件上多次运行OUtlookSpy,每次WordEditor都为空.所以它似乎不应该是初始化问题.
有人可以对我们应该在这里调查的内容有所了解吗?
c# ms-office outlook-object-model outlook-addin outlook-2013
在 Outlook COM 加载项 (C#) 中,我能够像这样在 Outlook 中检索所有选定的邮件
var selection = Globals.ThisAddIn.Application.ActiveExplorer().Selection;
List<Outlook.MailItem> outlookMailList = new List<Outlook.MailItem>();
foreach (object mail in selection)
outlookMailList.Add((Outlook.MailItem)mail);Run Code Online (Sandbox Code Playgroud)
将选定的邮件与一些元数据存储在 DMS 中。
现在我想用 Javascript API for Office (office.js) 做同样的事情。
这里的正确入口点是什么?因为当我在 Outlook 中选择多封邮件时,默认功能区中的 OutlookTab 按钮将被停用。
另见http://bettersolutions.com/javascript-api/hosts/extensionpoint.htm
selectedMail = Office.context.mailbox.item;Run Code Online (Sandbox Code Playgroud)
我现在如何获取 Outlook 中所有标记邮件的数据。我希望有类似的东西
selectedMails = Office.context.mailbox.items;
// OR
selectedMails = Office.context.mailbox.selectedItems;Run Code Online (Sandbox Code Playgroud)
有人知道如何检索哪些邮件被选择到 TaskPane 或 CustomPane 的信息吗?分别是否有可能?非常感谢。
outlook add-in outlook-addin javascript-api-for-office office-js
如何使用 VSTO Ribbons(对于 Outlook 2016)创建动态菜单层次结构?
xml 占位符可能看起来像这样,但我需要在菜单根目录下添加/删除菜单树(而不是 dummySingle)。似乎菜单项需要像“getDependents”回调之类的东西。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<contextMenus>
<contextMenu idMso="ContextMenuMailItem">
<menu id="Menu Root" label="Menu Root" >
<button id="dummySingle"
label="dummy"
onAction="DummyAction"/>
</menu >
</contextMenus>
</customUI>
Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何对 Outlook 加载项进行单点登录身份验证。我有我的清单文件,但每当我尝试上传它时,我都会收到以下错误:
无法安装此应用。清单文件不符合架构定义。元素“OfficeApp”命名空间“ http://schemas.microsoft.com/office/appforoffice/1.1 ”在命名空间“无效子元素“VersionOverrides” http://schemas.microsoft.com/office/mailappversionoverrides/1.1 ” . 预期的可能元素列表:命名空间“ http://schemas.microsoft.com/office/mailappversionoverrides ”中的“VersionOverrides”以及命名空间“ http://www.w3.org/2000/09/xmldsig# ”中的任何元素'... 命名空间 ' http://schemas.microsoft.com/office/appforoffice/1.1 ' 中的元素 'OfficeApp ' 具有无效的子元素 'VersionOverrides'http://schemas.microsoft.com/office/mailappversionoverrides/1.1 '。预期的可能元素列表:命名空间“ http://schemas.microsoft.com/office/mailappversionoverrides ”中的“VersionOverrides”以及命名空间“ http://www.w3.org/2000/09/xmldsig# ”中的任何元素'。
这是我的清单文件:
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xsi:type="MailApp">
<!-- Begin Basic Settings: Add-in metadata, used for all versions of Office unless override provided. -->
<!-- IMPORTANT! Id must be unique for your add-in, if you reuse this manifest ensure that you change this id to a new GUID. --> …Run Code Online (Sandbox Code Playgroud) outlook-addin ×10
c# ×4
.net ×1
add-in ×1
contextmenu ×1
delphi ×1
javascript ×1
mapi ×1
ms-office ×1
mscorlib ×1
office-js ×1
outlook ×1
outlook-2007 ×1
outlook-2013 ×1
pinvoke ×1
ribbon ×1
vsto ×1