【问题标题】:How to know if attachment is a signature in an Outlook email如何知道附件是否是 Outlook 电子邮件中的签名
【发布时间】:2012-02-03 07:04:55
【问题描述】:
我有一封 Outlook 电子邮件,我需要处理它的附件。但是在遍历附件时,如果附件是签名,我想跳过它。
要知道附件是否是我正在使用的签名:
outlookMailItem.Attachments[i].PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E");
但我收到了 Outlook 安全警报。
还有其他使用更安全代码的方法吗?可以使用 Redemption 完成吗?
感谢您的宝贵时间。
【问题讨论】:
标签:
c#
email
outlook
outlook-redemption
【解决方案1】:
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 正文并找出哪些 <img> 标记引用附件。
Redemption(我是它的作者)将允许您使用 RDOAttachment.Fields 访问该属性,您也可以使用 RDOAttachment.Hidden 属性,它会跳过几个环节来确定附件是否是嵌入图像和不是“真正的”附件。
【解决方案2】:
RDOAttachment.Hidden 属性仅在电子邮件格式为 HTML 时才有效。对于富文本格式的电子邮件,签名图像将被视为任何其他附件,并将此值为 false。更好的选择是使用适用于 HTML 和富文本的“Attachment.Type”。对于签名,它始终是 olOLE,对于其他附件,它将是 olByValue。因此,您可以使用此属性过滤签名图像。但是请注意,如果电子邮件格式是富文本并且您在电子邮件中嵌入了屏幕截图,则将其视为 olOLE 类型。