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

读取Outlook邮件RTFBody报"not implemented"错误如何提前检测?

Outlook VBA 检测MailItem.RTFBody可用性的解决方案

问题根因

你之前尝试的所有检测方法都会触发错误,原因是访问oMail.RTFBody这个动作本身就会在属性不可用的场景下直接抛出"not implemented"运行时错误,不等校验逻辑执行。

方案1:使用错误捕获机制(实现最简单,兼容性最好)

利用VBA的错误捕获能力,捕捉访问RTFBody时的异常,即可判断属性是否可用:

Sub CreateTempTaskFromMail()
    Dim oMail As Outlook.MailItem
    Set oMail = ActiveInspector.CurrentItem
        
    Dim s As String
    s = oMail.Subject
    
    Dim oTask As Outlook.TaskItem
    Set oTask = CreateTaskWithTempFolder(s, False)  ' 自定义创建任务的函数
    
    ' 检测RTFBody是否可用
    Dim rtfContent As Variant
    On Error Resume Next ' 开启错误捕获,遇到错误继续执行
    rtfContent = oMail.RTFBody
    If Err.Number = 0 Then
        ' 无错误,属性可用
        oTask.RTFBody = rtfContent
    Else
        ' 属性不可用,可添加降级逻辑,比如赋值纯文本正文
        oTask.Body = oMail.Body
    End If
    On Error GoTo 0 ' 恢复默认错误处理逻辑
End Sub

方案2:使用PropertyAccessor预检测(无错误跳转实现)

RTFBody属性底层对应MAPI标准属性PR_RTF_COMPRESSED,可以通过PropertyAccessor直接检测该属性是否存在,不需要访问RTFBody本身,不会触发对应错误:

Sub CreateTempTaskFromMail()
    Dim oMail As Outlook.MailItem
    Set oMail = ActiveInspector.CurrentItem
        
    Dim s As String
    s = oMail.Subject
    
    Dim oTask As Outlook.TaskItem
    Set oTask = CreateTaskWithTempFolder(s, False)  ' 自定义创建任务的函数
    
    Const PR_RTF_COMPRESSED As String = "http://schemas.microsoft.com/mapi/proptag/0x10090102"
    Dim propAcc As Outlook.PropertyAccessor
    Set propAcc = oMail.PropertyAccessor
    
    Dim rtfExist As Boolean
    On Error Resume Next
    ' 尝试获取MAPI属性值,不会触发RTFBody的not implemented错误
    Call propAcc.GetProperty(PR_RTF_COMPRESSED)
    rtfExist = (Err.Number = 0)
    On Error GoTo 0
    
    If rtfExist Then
        oTask.RTFBody = oMail.RTFBody
    Else
        ' 降级逻辑
        oTask.Body = oMail.Body
    End If
End Sub

补充说明

如果需要保留格式,RTFBody不可用时也可以读取oMail.HTMLBody属性,再转换为RTF格式赋值给任务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:02