Outlook 如何使用Exchange EWS设置SaveSentMessageFolder

Outlook 如何使用Exchange EWS设置SaveSentMessageFolder,outlook,exchangewebservices,Outlook,Exchangewebservices,使用CreateEmail()调用创建草稿邮件时,如何预先设置目标保存文件夹,以便在用户按“发送”和outlook时将最终发送的邮件保存到 在outlook中,它位于选项->“将已发送的项目保存到”下,但我不知道如何在EWS中执行此操作 谢谢在EWS中,您可以指定要将发送的邮件保存到哪个文件夹。如果您使用的是EWS托管API,则您可以通过Send或SendAndSaveCopy的重载来执行此操作,否则默认设置为当前安全主体的drafts文件夹和sent items文件夹 如果使用EWS创建草稿并

使用CreateEmail()调用创建草稿邮件时,如何预先设置目标保存文件夹,以便在用户按“发送”和outlook时将最终发送的邮件保存到

在outlook中,它位于选项->“将已发送的项目保存到”下,但我不知道如何在EWS中执行此操作


谢谢

在EWS中,您可以指定要将发送的邮件保存到哪个文件夹。如果您使用的是EWS托管API,则您可以通过Send或SendAndSaveCopy的重载来执行此操作,否则默认设置为当前安全主体的drafts文件夹和sent items文件夹

如果使用EWS创建草稿并使用Outlook发送,则需要将PR_SENTMAIL_ENTRYID设置为希望Outlook将邮件保存到的文件夹的十六进制ID

乙二醇

(这与Outlook设置的属性相同)

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

        AlternateId ai = new AlternateId(IdFormat.EwsId, folder.Id.UniqueId, "gscales@datarumble.com");
        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;
    }  
AlternateId ai=新的AlternateId(IdFormat.EwsId,folder.Id.UniqueId,”gscales@datarumble.com");
AlternateId Convertedai=(AlternateId)service.ConvertId(ai,IdFormat.HexEntryId);
ExtendedPropertyDefinition PR_SENTMAIL_ENTRYID=新的ExtendedPropertyDefinition(0x0E0A,MapPropertyType.Binary);
SetExtendedProperty(PR_SENTMAIL_ENTRYID,convertHextStringToByteArray(Convertedai.UniqueId));
内部静态字节[]ConvertHexStringToByteArray(字符串hexString)
{
如果(hexString.Length%2!=0)
{
抛出新的ArgumentException(String.Format(CultureInfo.InvariantCulture,“二进制键不能有奇数位数:{0}”,hexString));
}
byte[]HexAsBytes=新字节[hexString.Length/2];
for(int index=0;index
干杯
格伦

谢谢你。这正是我想要的。但是我有一个FolderId对象,比如FFF我对SetExtendedProperty的调用(PR_SENTMAIL_ENTRYID,Encoding.ASCII.GetBytes(FFF.UniqueId));他做不到这项工作。知道吗?您需要确保将EWSid转换为文件夹的HexEntryId(与PR_EntryId相同)。我在上面贴了一个样品
        AlternateId ai = new AlternateId(IdFormat.EwsId, folder.Id.UniqueId, "gscales@datarumble.com");
        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;
    }