2016-02-05 47 views
0

我一直在试用这一整天都无济于事。使用EWS API从日记项目中提取附加的电子邮件 - 嵌入的项目标识为空

我可以成功地检索从交换邮箱轴颈项,访问附件这是一个ItemAttachment

EmailMessage mailItem_Journal = EmailMessage.Bind(_service, item.Id, _propsJournalItem); 
ItemAttachment itemAttachment = mailItem_Journal.Attachments[0] as ItemAttachment; 
itemAttachment.Load(); 
Item attachedItem = itemAttachment.Item; 

Item包含内部是类型IPM.Note的即电子邮件的。我需要绑定到一个EmailMessage对象,以便我可以访问电子邮件的特定属性,例如ToRecipients,否则不可用。 然而attachedItemId为空,这将导致以下失败

EmailMessage mailItem = EmailMessage.Bind(_service, attachedItem.Id, _propsEmailDetail); 

值不能为空

我试着结合ItemAttachment但预计没有工作,抛错误

无效的ID

我猜测也许Id是空的,因为电子邮件被嵌入到另一个电子邮件,所以不是完全“在”它会得到“有”ID的任何文件夹,所以我试图使用Item.Save将其存储在邮箱,希望我可以再找回正常:

attachedItem.Save(_folderItemProcessing.Id); 

但是这给了我

此操作无法进行,因为这个服务对象已经有一个ID错误。要更新此服务对象,请改用Update()方法。

这对我来说没有意义,因为我的问题特别是一个ID为空的ID!

我不知道如何更新的方法是在这种情况下使用的,所以不是我试图移动项目

attachedItem.Move(_folderItemProcessing.Id); 

,这给了我

此操作不支持附件。

如何访问附加电子邮件的电子邮件属性?我只需要读取它们,除了将父邮件移动到文件夹之外,我不需要操作任何对象,而我已经成功完成了这些工作。

旁注:此代码是使用Outlook赎回库先前实施和邮件与mailItem_Journal.Attachments[1].EmbeddedMsg成功访问,所以它必须能够以某种方式!?

回答

1

当您拨打ItemAttachment.Load时,会将所有属性加载到该项目中,因此不需要拨打Bind。你应该拥有所有的属性,但是你需要将它投射到EmailMessage。就像:

itemAttachment.Load(); 
EmailMessage attachedMsg = itemAttachment.Item as EmailMessage; 
+0

不能相信我没有想到试图演员。会放弃一下,谢谢。 – Ciara

相关问题