我整天都在试验这一点但无济于事。
我可以从Exchange邮箱成功检索日记项目,并访问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
,否则无法使用。
但是Id
的{{1}}为空,这会导致以下操作失败
attachedItem
值不能为空
我尝试绑定到EmailMessage mailItem = EmailMessage.Bind(_service, attachedItem.Id, _propsEmailDetail);
,但正如预期的那样,这不起作用,抛出错误
ID无效
我猜测也许这个ID是空的,因为电子邮件是嵌入在另一封电子邮件中的,所以不完全“在”任何文件夹中它会“有”ID,所以我尝试使用ItemAttachment
存储它在邮箱中,希望我可以正常检索它:
Item.Save
然而这给了我错误
无法执行此操作,因为此服务对象已具有ID。要更新此服务对象,请改用Update()方法。
这对我没有意义,因为我的问题特别是一个无效的Id!
我不明白Update方法在这种情况下会如何使用,所以我尝试移动项目
attachedItem.Save(_folderItemProcessing.Id);
这给了我
附件不支持此操作。
如何访问附加电子邮件的电子邮件属性?我只需要阅读它们,除了将父邮件移动到文件夹之外我不需要操作任何对象,我已经成功完成了。
附注:此代码以前是使用Outlook Redemption库实现的,并且使用attachedItem.Move(_folderItemProcessing.Id);
成功访问了邮件,因此必须以某种方式实现!?
答案 0 :(得分:1)
当您致电ItemAttachment.Load
,将所有属性加载到项目中时,无需拨打Bind
。您应该拥有所有属性,但需要将其强制转换为EmailMessage
。类似的东西:
itemAttachment.Load();
EmailMessage attachedMsg = itemAttachment.Item as EmailMessage;