从网络办公室获取内联图片名称

时间:2015-09-15 18:00:09

标签: c# outlook-addin

我正在Outlook 2010上开发一个带有C#和VS2010的Outlook AddIn 我试图遍历MailItem的附件集合,并获取名称。我只对嵌入式(内联)图像感兴趣。

我知道Outlook会存储所有"常规"附件和嵌入(内联)图像在同一集合中。

到目前为止,我一直在做的方法是解析HTMLbody的{​​{1}}并查找mailItem HTML标记。我可以从那里开始工作,从<img>获取名称,该名称遵循此模式&#34; imageXXX.ext&#34; &#34; XXX&#34;是3位数字,ext是扩展名。一旦我从HTMLbody获得了名称,我就可以遍历mailItem.Attchments并将之前检索到的名称与mailItem.Attchments [index] .FileName匹配。这就是HTML的样子:

src=""

我的问题:当从web office client发送内嵌图片时,他们没有相同的命名模式。为他们分配了<img border=0 width=413 height=319 id="Picture_x0020_1" src="cid:image003.png@01D0EE58.60C76F40"> ,他们在附件集合中的名称是不同的。 这就是它的样子:

Guid

这样做的结果是我无法将HTMLbody中的附件名称与附件集合中的附件名称相匹配,这使我无法知道附件是否内联。

我尝试了什么: 循环遍历<img size="103705" contenttype="image/png" id="img976028" sizeoption="best" contextid="img985496" tabindex="0" style="max-width: 99.9%; -webkit-user-select: none;" src="cid:3119ab46-1503-48df-b6bb-738a9926618a"> 属性的Shapes集合。除了实际的形状之外,这实际上并不会返回任何内联附件。

获取属性Class,Parent,PathName,Position,Attachments的类型拼命寻找内联附件和非内联附件之间的差异。特别是Type属性,据我所知,它应该告知附件类型。

获取WordEditorGuid并将其与HTML中的mailItem.Attachments[i].GetType().GUID.ToString();进行比较,但没有成功,上面的行会返回Guid个零。

我想做什么:找到获取内嵌图片名称的方法,以便我可以将其与附件集合中的名称相匹配和/或找到一种方法来查找内嵌图像内联图像和附加图像之间的差异。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

不要假设cid属性以任何方式匹配文件名。整个cid属性的值将存储在PR_ATTACH_CONTENT_ID属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x3712001F)中。可以使用Attachment.PropertyAccessor.GetProperty访问该媒体资源。

另请注意,如果PR_ATTACH_CONTEMT_LOCATION属性与图像网址匹配,Outlook将从附件(而不是远程Web服务器)检索图像。

您可以在OutlookSpy中的属性中看到 - 选择消息,单击IMessage按钮,转到GetAttachmentTable选项卡,双击附件。