2015-04-23 63 views
-1

当我使用CreateEmail()调用创建草稿邮件时,如何预先设置目标保存文件夹,以便当用户按“发送”和Outlook时最终发送的项目将被保存到?如何使用Exchange EWS设置SaveSentMessageFolder

在Outlook中,它是在选项 - >“保存已发送的项目要”,但我不知道该怎么做,在EWS

谢谢

回答

1

在EWS,您可以指定哪个文件夹想要一条你的发送信息保存到。如果您使用EWS Managed API,则通过Overload for Send或SendAndSaveCopy执行此操作,否则默认将为当前安全主体的草稿文件夹和sent-items文件夹。

如果您创建与EWS草案,并与Outlook发送,那么你就需要将PR_SENTMAIL_ENTRYID https://msdn.microsoft.com/en-us/library/office/cc842003.aspx设置为你希望Outlook的邮件保存到

 ExtendedPropertyDefinition PR_SENTMAIL_ENTRYID = new ExtendedPropertyDefinition(0x0E0A,MapiPropertyType.Binary); 
     TestMove.SetExtendedProperty(PR_SENTMAIL_ENTRYID,ConvertHexStringToByteArray("00000000BE1CDD3D9606274890F3DE4B7DDFBE490100751047FD18EA304D9D40B1428BAC20D00000364670AA0000")); 

的文件夹的HexId (这与Outlook设置的属性相同)

您需要确保使用文件夹的HexId而不是EWSId来获取HexId,您可以使用convertId,例如

 AlternateId ai = new AlternateId(IdFormat.EwsId, folder.Id.UniqueId, "[email protected]"); 
     AlternateId Convertedai = (AlternateId)service.ConvertId(ai, IdFormat.HexEntryId); 
     ExtendedPropertyDefinition PR_SENTMAIL_ENTRYID = new ExtendedPropertyDefinition(0x0E0A,MapiPropertyType.Binary); 
     TestMove.SetExtendedProperty(PR_SENTMAIL_ENTRYID, ConvertHexStringToByteArray(Convertedai.UniqueId)); 

     internal static byte[] ConvertHexStringToByteArray(string hexString) 
    { 
     if (hexString.Length % 2 != 0) 
     { 
      throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString)); 
     } 

     byte[] HexAsBytes = new byte[hexString.Length/2]; 
     for (int index = 0; index < HexAsBytes.Length; index++) 
     { 
      string byteValue = hexString.Substring(index * 2, 2); 
      HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture); 
     } 

     return HexAsBytes; 
    } 

干杯 格伦

+0

谢谢。这应该正是我想要的。但我有一个FolderId对象说FFF 我调用SetExtendedProperty(PR_SENTMAIL_ENTRYID,Encoding.ASCII.GetBytes(FFF.UniqueId)); 不做这项工作。任何想法? – DayDayHappy

+0

您需要确保将EWSid转换为文件夹的HexEntryId(与PR_EntryId相同)。我已经在 –

+0

以上发布了一个示例,非常感谢。它完美的作品 – DayDayHappy

相关问题