Outlook邮件附件数量统计代码返回n+1异常问题咨询
Outlook邮件附件计数异常修复方案
问题根源
Outlook的Attachments.Count属性会默认统计两类用户无感知的隐藏附件:
- RTF格式邮件的签名内嵌图片、正文内联装饰图片
- 部分系统发送邮件携带的元数据隐藏附件
你直接对统计结果统一减1的逻辑不具备通用性,当邮件不存在隐藏附件时就会出现正常附件计数被误减的问题。
正确实现代码
Dim oMail As Outlook.MailItem Dim sAttach As String Dim nAttach As Integer Dim oAtt As Outlook.Attachment ' MAPI属性标识,用于识别隐藏附件 Const PR_ATTACH_HIDDEN As String = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B" nAttach = 0 ' 遍历所有附件,过滤非用户主动添加的无效附件 For Each oAtt In oMail.Attachments ' 排除系统隐藏附件 If Not CBool(oAtt.PropertyAccessor.GetProperty(PR_ATTACH_HIDDEN)) Then ' 可选:排除正文内嵌的签名/装饰图片,需要统计内联附件可删除此判断 If oAtt.Type <> olEmbeddeditem AndAlso oAtt.Position > 0 Then nAttach = nAttach + 1 End If End If Next sAttach = CStr(nAttach)
调整说明
- 若需要统计所有用户主动添加的附件(包括正文内插入的文件/图片),删除代码中内联附件判断的分支即可
- 若仅需要统计出现在邮件附件栏的独立附件,保留现有判断逻辑即可
内容的提问来源于stack exchange,提问作者c_dewitt
相关产品推荐
相关产品推荐

