gpt4 book ai didi

c# - 在构造ExtendedPropertyDefinition时应该使用GUID或DefaultExtendedPropertySet.PublicStrings吗?

转载 作者:太空狗 更新时间:2023-10-29 21:27:35 24 4
gpt4 key购买 nike

我正在使用EWS Managed API 1.2和Exchange Server 2007开发C#.NET Framework 4.5 Windows Form应用程序,该应用程序执行某种形式的邮件同步。

现在,我正在处理扩展属性,我想澄清一些事情:

Q1。 DefaultExtendedPropertySet类的用途是什么? MSDN says“定义扩展属性的默认集合。”

  • 仅仅是对扩展属性进行分组吗?
  • 如果是,为什么首先在那儿分组?
  • 我们是否有任何Ews API方法可以获取项目中属于同一组的所有扩展属性的值?

  • Q2。 我无法确定在构造 DefaultExtendedPropertySet.PublicStrings时是否应该使用自定义GUID或 ExtendedPropertyDefinition:
    var MyXProp = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.PublicStrings,
    "MyXProp", MapiPropertyType.String);

    或者
    Guid MyPropertySetId = new Guid("{C11FF724-AA03-4555-9952-FA248A11C3E}");            
    var extendedPropertyDefinition = new ExtendedPropertyDefinition(
    MyPropertySetId, "MyXProp", MapiPropertyType.String);
  • 决定上述决定的因素是什么?
  • 这两种方法又有什么区别?
  • 最佳答案

    对我自己的问题的立即答复如下。但是在阅读之后,我意识到还有更多相关的知识要知道。因此,这些事情都遵循了答案。

    Q1。

  • 是的,DefaultExtendedPropertySet用于分组。 Microsoft预定义了一些 namespace ,以鼓励对命名属性进行逻辑分组,并将其包括在此枚举中。
  • 分组是为了方便起见,并且还避免了由不同供应商引入的不同属性的名称之间的冲突。
  • 不存在没有API可以提取属于同一组的所有属性的值。

  • Q2。
  • GUID创建了一个新的组,从而在组级别和名称级别的两个级别上提供了分隔。但是,具有非通用名称的DefaultExtendedPropertySet.PublicStrings也足够。重点是避免与其他供应商创建的命名属性冲突。如果要将应用程序与其他一些应用程序集成在一起,那么PublicStrings也可以提供更好的发现性(在集成期间可能需要非常仔细地指定GUID)。

  • MAPI属性
  • Microsoft使用消息传递API(MAPI)作为连接不同消息传递组件的一种方式。 MAPI规范将大多数对象表示为由属性标识符或PropID标识的属性。
  • 属性标识符是一组十六进制值,范围从1到0xFFFF(总计65536)。
  • 从历史上看,为了方便起见,这些属性分为逻辑组。
  • 标准MAPI属性或固定属性-0x8000下面的属性。此范围可分割为:
  • 可传输的-此范围由Exchange可以随邮件发送的属性组成。
  • 内部-此范围由只能由Exchange设置的属性组成。
  • 不可传输-此范围表示当Exchange传递邮件
  • 时未在组织外部传递的属性
  • 命名属性-0x8000上方的属性。它们允许供应商/开发人员通过添加自己的属性来扩展标准MAPI属性集。有两种命名属性:
  • 带有数字名称的属性-由MS Outlook等程序使用;这些属性名称通常在源文件中定义。
  • 字符串名称为的属性-这些属性具有与名称相关联的GUID,从而允许开发人员将命名属性划分为属性集。每个GUID代表一个属性集,因此所有与它们相关联的具有相同GUID的命名属性都属于相同的属性集。

  • rfc822 x标题到MAPI属性的转换
  • 在Internet上发送的消息以message/rfc822格式发送,该格式支持称为 x-headers 的一组属性。
  • 从rfc822 x-headers键值对到MAPI属性的转换是通过名为 Imail 的组件完成的。
  • 因此,如果入站邮件具有x-header,则Imail将为其创建命名属性并将其存储在邮件中。

  • 有一些微妙的历史细节,例如
  • Imail在Exchange 2000中被重新编写,以包括临时 header ,而该 header 又包含x header 。
  • 由于MAPI属性的数量(65536)受到限制,因此在Exchange服务器
  • 上为其分配了配额
  • 由于不同的设计决策,从版本到版本的Exchange服务器,以下内容已更改:
  • ,其中MAPI属性将像在特定邮件上或在整个邮箱数据库中一样被维护
  • 规则保留GUID和MAPI属性的名称

  • 在以下链接中阅读更多详细信息:
  • http://technet.microsoft.com/en-us/library/bb851492(v=exchg.80).aspx
  • http://technet.microsoft.com/en-us/library/jj937955(v=exchg.141).aspx
  • http://technet.microsoft.com/en-us/library/bb851493(v=exchg.80).aspx
  • http://blogs.technet.com/b/exchange/archive/2010/07/29/3410545.aspx
  • http://blogs.technet.com/b/exchange/archive/2009/04/06/3407221.aspx
  • 关于c# - 在构造ExtendedPropertyDefinition时应该使用GUID或DefaultExtendedPropertySet.PublicStrings吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187481/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com