当我使用CreateEmail()调用创建草稿邮件时,如何预先设置目标保存文件夹,以便在用户按下"发送"和前景?
在展望中,它位于选项 - >> "将已发送的项目保存到",但我不知道如何在EWS中执行此操作
谢谢
答案 0 :(得分:1)
在EWS中,您可以指定要将发送的邮件保存到哪个文件夹。如果您使用EWS托管API,则通过Overload for Send或SendAndSaveCopy执行此操作,否则默认将是当前安全主体的drafts文件夹和sent-items文件夹。
如果您使用EWS创建草稿并使用Outlook发送,那么您需要将PR_SENTMAIL_ENTRYID https://msdn.microsoft.com/en-us/library/office/cc842003.aspx设置为您希望Outlook将邮件保存到的文件夹的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;
}
(这与Outlook设置的属性相同)
你需要确保你使用文件夹的HexId而不是EWSId来获得你可以使用convertId的HexId,例如
TypedQuery<UserActionPerUserResult> messagesQuery = entityManager.createQuery(
"SELECT e from UserActionPerUserResult e JOIN FETCH e.emailMessages em WHERE e.id = 1 and e.userAction.id = 1", UserActionPerUserResult.class);
List<UserActionPerUserResult> resultList = messagesQuery.getResultList();
干杯 格伦