从移动设备回复时EWS扩展属性不存在于电子邮件中

时间:2016-02-12 03:43:14

标签: exchangewebservices

您好我正在编写一个应用程序,它将扩展属性添加到使用EWS发送的电子邮件中;当用户从Outlook回复时,存在扩展属性,我的应用程序可以读取该属性。

我的问题是当用户从移动设备回复电子邮件时,扩展属性不再存在。

以下是我用来添加属性的代码:

 Exchange.EmailMessage email = new Exchange.EmailMessage(_ExchangeService);
 email.ToRecipients.Add(txtEmailAddress.Text);
 email.Subject = txtSubject.Text;
 email.Body = txtBody.Text;
 Guid MyPropertySetId = new Guid("{C11FF724-AA03-4555-9952-8FA248A11C3E}");
 Exchange.ExtendedPropertyDefinition extendedPropertyDefinition = new Exchange.ExtendedPropertyDefinition(MyPropertySetId, "ValidationId", Exchange.MapiPropertyType.String);
 email.SetExtendedProperty(extendedPropertyDefinition, "234");
 email.SendAndSaveCopy();

以下是阅读该属性的代码:

Guid MyPropertySetId = new Guid("{C11FF724-AA03-4555-9952-8FA248A11C3E}");

Exchange.ExtendedPropertyDefinition extendedPropertyDefinition = new Exchange.ExtendedPropertyDefinition(MyPropertySetId, "ValidationId", Exchange.MapiPropertyType.String);

Exchange.ItemView view = new Exchange.ItemView(10);
Exchange.PropertySet properties = new Exchange.PropertySet(Exchange.BasePropertySet.IdOnly, Exchange.ItemSchema.Subject, extendedPropertyDefinition);
properties.RequestedBodyType = Exchange.BodyType.Text;
properties.BasePropertySet = BasePropertySet.FirstClassProperties;
foreach (Exchange.EmailMessage item in emails)
{
   item.Load(properties);
   if (item.IsRead)
   {
      continue;
   }

   if (item.ExtendedProperties.Count > 0)
   {
     foreach (Exchange.ExtendedProperty extendedProperty in item.ExtendedProperties)
     {
       if (extendedProperty.PropertyDefinition.Name == "ValidationId")
       {
         txtPropertyNameReceived.Text = extendedProperty.PropertyDefinition.Name;
         txtPropertyValueReceived.Text = extendedProperty.Value.ToString();

       }
       else
       {
         continue;
       }
     }
     item.Delete(Exchange.DeleteMode.HardDelete);
   }
}

预计会出现这个问题吗?我的意思是,这是因为用户正在回复他的手机吗?或者代码中有什么问题吗?

如果问题是代码,我可以请求您帮助告诉我代码中缺少或错误的部分。

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下是为什么它不起作用的解释:

  1. 当某人回复时,此操作会创建新的电子邮件副本
  2. 这意味着作为电子邮件客户端应用程序(或插件)开发人员,您需要手动将扩展属性从原始邮件复制到新邮件
  3. 扩展属性是MAPI属性,可以使用Microsoft的MAPI专有协议
  4. 发现
  5. 我不知道任何适用于移动设备的MAPI客户端库(Windows驱动的设备除外)