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

新邮件到达后UnprocessedDocuments代理异常问题求助

解决方案

一、让代理仅处理新到达的邮件

  1. 添加文档类型与位置校验
    在处理前先确认文档是收件箱中的标准邮件:
    • 检查文档表单为Memo(Notes默认邮件表单)
    • 验证文档在默认收件箱文件夹(内部名称为($Inbox))
  2. 过滤新邮件专属标记
    Notes新到达的邮件会携带$MailFlags字段,其中N代表未读/新邮件,通过这个标记可精准筛选目标文档。
  3. 正确标记已处理文档
    取消注释Call session.UpdateProcessedDoc( doc ),并放在doc.save()之后执行——这会告知Notes服务器该文档已被处理,不会再被UnprocessedDocuments集合纳入。

二、提升代理速度,避免用户提前编辑

  1. 配置代理为高优先级服务器端运行
    • 编辑代理属性,选择「Run on server」确保在服务器端执行(而非依赖客户端)
    • 在「Basics」标签下将「Priority」设为「High」,让服务器优先调度该代理
  2. 处理时锁定文档
    修改文档前调用doc.Lock(),阻止用户在代理处理过程中编辑文档;操作完成后调用doc.Unlock()释放锁。

修改后的代理代码

Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim mailFlags As Variant
    
    Set db = session.CurrentDatabase
    Set collection = db.UnprocessedDocuments
    Set doc = collection.GetFirstDocument()
    
    While Not(doc Is Nothing)
        ' 仅处理收件箱中的标准邮件文档
        If doc.Form(0) = "Memo" And doc.IsInFolder("($Inbox)") Then
            mailFlags = doc.GetItemValue("$MailFlags")
            ' 筛选带有新邮件标记的文档
            If Not Isempty(mailFlags) And Instr(mailFlags(0), "N") > 0 Then
                ' 锁定文档防止用户编辑
                If doc.Lock() Then
                    On Error Resume Next ' 避免锁定失败中断代理
                    If doc.Hasitem("$REF") Then
                        doc.Subject= "($Ref) " & doc.Subject(0)
                    Else
                        doc.Subject = "(No Ref) " & doc.Subject(0)
                    End If
                    
                    Call doc.save(True,False)
                    ' 标记文档为已处理,避免重复触发
                    Call session.UpdateProcessedDoc( doc )
                    ' 释放文档锁
                    Call doc.Unlock()
                    On Error Goto 0
                End If
            End If
        End If
        
        Set doc = collection.GetNextDocument(doc)
    Wend
End Sub

额外注意事项

  • 确保代理的「Run on behalf of」账号拥有邮件数据库的编辑权限,否则无法完成锁定和修改操作
  • 若延迟问题仍存在,可联系Notes管理员检查服务器代理调度任务的负载情况,调整相关配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:45:30