如何识别Inspector/Explorer中选中的MailItem是否为另一MailItem的附件?
识别Outlook中选中的MailItem是否为其他邮件的附件
我在开发Outlook相关的自动化工具时,遇到了一个棘手的问题:需要判断在Inspector窗口打开的、或者Explorer中选中的MailItem,是不是作为附件嵌套在另一封邮件里的。
我翻遍了Outlook对象模型的文档,也测试了各种属性组合,还查了不少社区讨论,目前确实没有找到官方提供的直接实现方法。
这个识别需求的必要性在于:如果目标MailItem是作为附件存在的,那么它的正文是无法编辑并保存的——这类嵌套邮件本质上是只读状态,强行尝试修改会触发权限错误或者保存失败。所以必须先准确识别出这种场景,才能保证后续操作的可行性。
目前我正在尝试一些间接的判断思路,供大家参考:
- 检查
MailItem.Parent的类型:如果它不是Folder而是Attachment对象,那大概率是嵌套附件 - 通过
MailItem.EntryID,遍历当前所有打开的Inspector窗口中的邮件,检查它们的Attachments里是否包含这个EntryID对应的邮件附件 - 使用
PropertyAccessor读取邮件附件的MAPI属性,判断其是否属于嵌套的邮件对象
不过这些方法都需要针对不同的Outlook版本做兼容性测试,暂时还没有找到通用的完美方案。如果有朋友解决过这个问题,欢迎留言分享经验!
内容的提问来源于stack exchange,提问作者Anderson Rissardi
相关产品推荐
相关产品推荐

