【问题标题】:Agent for UnprocessedDocuments After New Mail Arrives新邮件到达后未处理文件的代理
【发布时间】:2022-12-18 06:44:38
【问题描述】:

我希望在一些文件到达我的邮寄申请时对其进行修改。 (我需要删除 $REF 字段,然后允许拖放到文件夹中,但这不是重点。)

我将代理设置为“新邮件到达后”并选择未处理的文档。未处理文档的设计器帮助状态...

代理属性为....

但是代理会选择收件箱中已修改或编辑的任何文档,而不仅仅是新到达的电子邮件。在代理运行之前,还有最多一分钟的延迟。

Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument    
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
    If doc.Hasitem("$REF") Then
        doc.Subject= "($Ref) " & doc.Subject(0) 'Only testing here will remove item if exists
    Else
        doc.Subject = "(No Ref) " & doc.Subject(0)
    End If

    
    Call doc.save(True,False)
'   Call session.UpdateProcessedDoc( doc ) 'This doesn't appear to make any difference.
    Set doc = collection.GetNextDocument(doc)
Wend

End Sub

任何帮助仅在新邮件上运行此类脚本并且比现在更快的帮助,因为用户可以在代理运行之前编辑文档,将不胜感激。 谢谢

【问题讨论】:

    标签: lotus-notes lotusscript


    【解决方案1】:

    你可能想使用触发器“在新邮件到达之前”而不是“新邮件到达后”。

    “在新邮件到达之前”对每一封新电子邮件执行立即地.

    您可以使用以下方式访问电子邮件文档

    Dim session as New NotesSession
    Dim doc as NotesDocument
    Set doc = session.DocumentContext
    

    您可以找到两个触发器的很好比较here

    【讨论】:

    • 谢谢克努特,它看起来更圆滑、更可靠。
    • 我对此不太确定。在新邮件到达之前在文档保存到收件箱之前执行。我不确定 $Ref 是否会在那里。
    【解决方案2】:

    延迟是正常的。代理管理器不保证立即执行。

    您可能看到的是“首次效应”。即,您第一次运行代理时,所有消息都是“新的”,因为与代理上的上次运行时间戳相比它们更新——在遥远的过去默认为第 0 天。您是否在同一个数据库中多次尝试过此操作,以查看第二次运行时未处理的文档中是否包含什么?

    【讨论】:

      猜你喜欢
      • 2023-01-08
      • 2021-08-19
      • 2010-09-12
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      相关资源
      最近更新 更多