【问题标题】:How to Identify the Document is in Inbox/Draft/Sent in Lotus Notes Using Notes API?如何使用 Notes API 识别文档在 Lotus Notes 中的收件箱/草稿/已发送?
【发布时间】:2012-03-22 11:16:12
【问题描述】:

DocumentCollection 文档 = db.getAllDocuments(); 文档 doc = collection.getFirstDocument();

使用哪种方法来识别文档位置。无论是在收件箱、已发送还是草稿中。

【问题讨论】:

    标签: lotus-notes


    【解决方案1】:

    最安全的方法是使用 db.GetView() 获取每个文件夹的句柄,然后查看文档是否在该文件夹中。为此,您可以使用 db.AllEntries() 方法获取 NotesViewEntryCollection,然后调用 GetEntry 方法查看文档是否在该集合中。

    如果您为数据库启用了文件夹引用,则可以使用 Notes 文档的 folderreferences 属性来简化操作。

    【讨论】:

    • 嗨,Ken,我已经尝试过使用 db.getView() View notesView = (View) db.getView("$Sent"); ViewEntryCollection notesViewCollections = notesView.getAllEntries(); `
    【解决方案2】:

    收件箱是一个文件夹。已发送和草稿是视图。这是一种适用于视图和文件夹的方法:

    • 使用 View myView = Database.getView 获取 ($Inbox)、($Sent) 或 ($Drafts) 视图。
    • 创建一个空的 NoteCollection 对象
    • 使用 NoteCollection.add(doc) 将您的文档放入集合中
    • 然后使用 NoteCollection.intersect(myView)。
    • 如果 NotesCollection.Count !=0,您的文档仍在 NoteCollection 中,因此它位于您正在测试的视图或文件夹中。

    【讨论】:

    • 更多背景... 发送的消息有 PostedDate 项,但没有 DeliveredDate 项。 $Sent 是一个视图,使用此选择公式 SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView));因此,所有具有有效 PostedDate 且没有 DeliveredDate 的邮件都在 Sent 文件夹中,除非它们在 ExcludeFromView 项中包含“S”。
    • 发送的消息有 PostedDate 项,没有 DeliveredDate 项。 $Sent 是一个视图,使用此选择公式 SELECT DeliveredDate = "" & PostedDate != "" & !(@IsMember("S"; ExcludeFromView));因此,所有具有有效 PostedDate 且没有 DeliveredDate 的邮件都在 Sent 文件夹中,除非它们在 ExcludeFromView 项中包含“S”。
    • 对于 Sent 和 Drafts,如果您不想使用 NoteCollection 方法,您可以直接为适当的项目编写测试代码,也可以将这些公式与 Session.Evaluate 方法一起使用并得到结果。收件箱是一个不同的故事,因为它是一个文件夹而不是一个视图。收到的邮件有一个有效的 DeliveredDate 项目,因此您可以检查它——但并非所有收到的邮件都在收件箱中,因为用户可以将它们移动到其他文件夹。因此,如果您不想使用 NoteCollection 方法,请按照 Ken 的建议检查 ViewEntryCollection 中的每个条目。
    • 谢谢rhsatrhs...我已经尝试过Ken的方法并使用guilio的代码示例。它对我来说很好......
    【解决方案3】:

    这个问题涉及2个方面。文件夹和视图。您可以分两部分完成。首先,您可以查看这个 IBM technote,它解决了您与文件夹相关的问题(即收件箱是一个文件夹)。

    “草稿”和“已发送”设计元素是视图,因此必须进行不同的搜索。您可以通过使用 NotesViewEntryCollection 的“contains”方法来完成此操作,如下所示:

    Function FindDocument(view As notesView, doc As notesDocument) As Boolean
        On Error Goto errHandle
        Dim vec As NotesViewEntryCollection
        Dim bFound As Boolean
    
        bFound = False
        Set vec = view.AllEntries
        If vec.Contains(doc) Then
            bFound = True
        End If
        FindDocument = bFound
        Exit Function
    errHandle:
        Print Lsi_info(2) + ":" + Str(Err) + " - " + Error(Err) + _
        ", at line " + Str(Erl)
        Exit Function
    End Function
    

    请注意,您可以将此功能用于任何视图,而不仅仅是发送/草稿视图。

    【讨论】:

    • 嗨 giulio,感谢您的大力帮助.. 我已经用 java 试过了...它工作正常...我得到了正确的结果.. 谢谢大家..
    【解决方案4】:

    在 Domino Designer 中打开邮件数据库并查看视图和文件夹。如果是一个视图有一个 Select 语句,查看选择了哪些文档。如果是文件夹,则必须知道文档是如何附加到文件夹的。

    ($Sent) 是一个视图,但 ($Drafts) 和 ($Inbox) 是文件夹。对于后两者,您确实必须使用FolderReferences。

    【讨论】:

    • $Drafts 是视图,而不是文件夹。
    • (Drafts) 是一个文件夹,($Drafts) 是一个视图。对不起。 :-$
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多