You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PR_SECURITY_FLAGS发送加密邮件触发运行时错误‘5’求助

解决Outlook VBA设置加密邮件时的运行时错误5

以下是针对问题的具体修复方案:

1. 修正PR_SECURITY_FLAGS常量的命名空间

原代码中常量缺少http://前缀,这是MAPI属性标识的必要组成部分,会导致PropertyAccessor无法识别属性路径,直接引发参数无效错误。修正后的常量定义:

Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"

2. 显式声明ulFlags变量类型

VBA中未声明的变量默认是Variant类型,而PR_SECURITY_FLAGS要求传入32位整数(Long类型),类型不匹配会触发参数错误。需添加变量声明:

Dim ulFlags As Long

3. 完整修正后的代码

Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"

FilePath = Application.ActiveWorkbook.FullName
FileName = Application.ActiveWorkbook.Name

Dim OutApp As Object
Dim OutMail As Object
Dim ulFlags As Long ' 显式声明Long类型

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

ulFlags = ulFlags Or &H1 ' SECFLAG_ENCRYPTED
ulFlags = ulFlags Or &H2 ' SECFLAG_SIGNED

With OutMail
    .To = recipient
    .Subject = FileName
    .HTMLBody = body & "<br>" & .HTMLBody
    .PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags ' 移除多余括号避免类型歧义
    .Display ' 或使用.Send,确保属性设置后生效
End With

额外注意事项

  • 确保Outlook账户已配置有效的数字证书,否则即使代码修复,加密/签名操作仍会失败。
  • 若仍报错,检查Outlook宏安全设置,确保允许运行对应权限的宏。

内容的提问来源于stack exchange,提问作者Byron Elzinga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:49:56