我的程序使用 MAPI 处理 Exchange 邮箱。问题是如果用户启动 Outlook,将文件添加为附件并打开 Paint,在那里选择一个区域,将其复制到剪贴板并粘贴到邮件正文中,则生成的邮件显示两个附件。
更具体地说,程序调用IMAPIMessage::GetAttachmentsTable()
以检索附件表并且该表包含两个对象。程序是否可以确定“附件”是否真的是附件或内联内容的一部分?
您需要检查 HTML 正文(通过 img 标记)是否通过 img:cid 和 PT_ATTACH_CONENTS_ID 属性或通过文件名 (PR_ATTACH_LONG_FILENAME) 或网络位置 (PR_ATTACH_COMTENT_LOCATION) 引用附件。
您正在寻找的属性是 PR_RENDERING_POSITION (0x370B0003)。A -1 表示附件是“正常”附件而不是内联附件。如果该值不是-1,则表示内联附件,并且该值是应呈现附件的正文中的位置。
这是描述它的MSDN 页面。
编辑:
德米特里,我不同意你的评论。我有带有嵌入式附件的 HTML 电子邮件,并且 PR_RENDERING_POSITION 正在按照我发布的 MSDN 页面中的描述工作。