如何知道附件是否是Outlook电子邮件中的签名

时间:2012-02-03 07:04:55

标签: c# email outlook outlook-redemption

我有一封Outlook电子邮件,我需要处理它的附件。但是当通过附件进行迭代时,如果附件是签名,我想跳过它。

要知道附件是否是我正在使用的签名:

outlookMailItem.Attachments[i].PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E");

但是我收到了Outlook安全警报。

还有其他方法可以使用更安全的代码吗?可以使用Redemption来完成吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:8)

PR_ATTACH_CONTENT_ID属性很好地表明附件是嵌入式图像,但是附件中设置了PR_ATTACH_CONTENT_ID属性,但它们不是嵌入式图像(Lotus Notes喜欢在所有附件上设置PR_ATTACH_CONTENT_ID)。 即使未设置PR_ATTACH_CONTENT_ID,Outlook也可以使用PR_ATTACH_CONTENT_LOCATION或PR_ATTACH_LONG_FILENAME来加载嵌入的图像。 唯一真正的测试是解析HTML正文并找出哪些标记引用附件。 Redemption将允许您使用RDOAttachment访问该属性。字段,您还可以使用RDOAttachment。隐藏属性,跳过几个圈来确定附件是否是嵌入式图像不是“真正的”依恋。

答案 1 :(得分:0)

RDOAttachment.Hidden属性仅在电子邮件格式为HTML时才有效。对于RTF格式的电子邮件,签名图像将被视为任何其他附件,并将此值设为false。更好的选择是使用" Attachment.Type",它适用于HTML和Rich Text。对于签名,它总是olOLE,对于其他附件,它将是olByValue。因此,您可以使用此属性过滤签名图像。但请注意,如果电子邮件格式为Rich Text,并且您在电子邮件中嵌入了屏幕截图,则会将其视为olOLE类型。