在 Outlook 中访问用户定义的字段

Posted

技术标签:

【中文标题】在 Outlook 中访问用户定义的字段【英文标题】:Accessing User Defined Fields in Outlook 【发布时间】:2013-05-17 00:30:35 【问题描述】:

所以,我有一个如下所示的自定义电子邮件表单/消息,我想访问“文档标题:”字段值以将其插入到电子邮件正文中。

我目前有这个代码;

Function Item_Send()
    Item.Body = Item.Body + UserProperties.Find("TextBox1").Text
End Function

我已经尝试了多种变体,例如Item.UserProperties.Find(...).ValueFind(...).Value 本身、UserProperties.Find("TextBox1", false).Text 等。

研究;CodeProjectMSDN Find Method DocumentationMicrosoft Support - How to create an email message formMicrosoft Support - FAQ about custom outlook formsMicrosfot Support - Working with User Defined Fields

我似乎无法找到解决方案。 贴出的代码返回Object requred: 'UserProperties.Find(...)' 如果我将false 添加到我得到的参数中; Object doesn't support this property of method: 'UserProperties.Find' 自己查找给了我Type mismatch: 'Find'

这就是我能得到的所有错误消息。任何帮助将不胜感激。 (我使用的是脚本编辑器按钮来编写上面的代码,而不是 Visual Basic 按钮)。

【问题讨论】:

【参考方案1】:

将有问题的行改为

set prop = Item.UserProperties.Find("TextBox1")
if Not (prop Is Nothing) Then
  Item.Body = Item.Body + prop.Value
End If

还要确保属性名称确实是“TextBox1”,这听起来像是一个控件名称。查看OutlookSpy 的项目:单击项目按钮,选择UserProperties 属性,单击浏览,进入IEnumVariant 选项卡,双击该属性。

您还可以单击 IMessage 按钮查看原始 MAPI 属性。

【讨论】:

好吧...我正在尝试访问用户输入控件的值...我看过的所有内容似乎都指向 UserProperties.Find() 方法... 种类... Outlook 建议“此项目包含无法在阅读窗格中显示的活动内容。打开项目以阅读其内容。”如果我打开它,我会看到带有值的表单,但如果可能的话,最好像普通电子邮件一样在预览窗口中打开它? 那是带有脚本的自定义表单吗? 那种?我转到开发人员选项卡,选择设计表单,然后选择显示消息的表单。然后我将自定义字段和上面的脚本放在打开的消息表单中。 您可以摆脱脚本并改用表单区域(Microsoft 一段时间以来一直在尝试弃用自定义表单),或者您可以尝试更新一个名为 SideEffects 的特殊命名属性(DASL名称 schemas.microsoft.com/mapi/id00062008-0000-0000-C000-000000000046/85100003) 并删除 seHasScript 位 (= 0x2000) - 使用 OutlookSpy(单击 IMessage 按钮)查看现有消息。我不知道 MailItem.PropertyAccessor 是否会让您更新该属性:OOM 对一些特殊属性确实很挑剔。您可能需要使用 Redemption 来更新它。

以上是关于在 Outlook 中访问用户定义的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Outlook 插件中访问 EWS `UniqueId` 字段

Outlook状态一直显示available的解决方法

Outlook状态一直显示available的解决方法

如何使用 Outlook 2013 在电子邮件中附加下拉选定字段数据

访问自定义 Outlook 日历条目

在Outlook中显示MailItem的用户定义属性