Lotus notes 调用getEmbeddedObjects();(Domino服务器API)返回错误的结果

Lotus notes 调用getEmbeddedObjects();(Domino服务器API)返回错误的结果,lotus-notes,lotus,lotus-domino,lotusscript,Lotus Notes,Lotus,Lotus Domino,Lotusscript,Domino服务器API getEmbeddedObjects()返回错误的结果(零)。 尽管附件是作为EmbeddedOBject发送的,getEmbeddedObjects()返回零。 邮件类型是而不是MIME 这是一个Java应用程序。这个问题有解决办法吗 我从文件中取出尸体。如果主体是richtextitem,我调用getEmbeddedObjects(),它返回零,尽管附件作为嵌入对象存在 如果从文档对象中获取嵌入对象,则它们将不包含附件。将getEmbeddedObjects与“Bo

Domino服务器
API getEmbeddedObjects()返回错误的结果(零)。
尽管附件是作为
EmbeddedOBject
发送的,
getEmbeddedObjects()返回
。 邮件类型是
而不是MIME

这是一个Java应用程序。这个问题有解决办法吗


我从文件中取出尸体。如果主体是richtextitem,我调用getEmbeddedObjects(),它返回零,尽管附件作为嵌入对象存在

如果从
文档
对象中获取嵌入对象,则它们将不包含附件。将
getEmbeddedObjects
与“Body”
RichTextItem
一起使用也会获取附件


这有帮助吗?

附件不一定要嵌入RichText字段中。要引用designer帮助中的内容,请执行以下操作:

如果需要访问存在于文档中但不属于富文本项的OLE/2嵌入对象(例如,因为对象最初是在文档的表单上创建的),请使用文档中的EmbeddedObjects属性

问题的另一个来源可能是,您必须检查几个“Body”RichText项


遗憾的是,LotusNotes没有提供从NotesDocument对象提取附件的单一可靠方法。要彻底检查,您需要检查它包含的所有richtext项以及文档对象本身

我编写了以下代码,从邮箱中选定的电子邮件中提取附件,以减少文件大小(我的用户保存了所有内容)。不过,主循环与您的问题相关。它显示了在文档的所有项目中循环查找带有附件的richtext项目的过程,然后在所有项目中循环查找类型为“附件”的项目

(请原谅代码的黑客性。它不是为了提高效率而编写的)


查看文档中的所有项目以查找附件的可能性是徒劳的。您所需要做的就是使用@AttachmentNames公式(通过会话对象的evaluate()方法使用Document参数提供)获取附件名称的集合,如果集合包含的字符串多于一个空字符串,则使用getAttachment()方法获取相应嵌入对象的句柄


getAttachment()可以获取文档的任何附件,无论它与RichTextItem或V2样式的附件相关联(由web UI或转换外部邮件时创建)。在适当的时候,不要害怕使用公式语言——它可以让你的生活变得简单。

我从文档中摘取正文。如果主体是richtextitem,我调用getEmbeddedObjects(),它返回零,尽管附件作为嵌入对象存在。嗨,Rajath,如果你能找到解决方案,我也有同样的问题,请分享你的经验。
Sub Initialize

    Set s = New NotesSession
    Set db = s.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    Dim rtItem As NotesRichTextItem
    Dim RichTextItemNames List As String
    Dim DocumentItemNames List As String
    Dim itemCount as Integer

    While Not (doc Is Nothing)

        'Scan all richtext items in document for embedded objects
        Forall i In doc.Items

            If i.Type = RICHTEXT Then
                Set rtItem = doc.GetFirstItem(i.Name)
                If Not Isempty(rtItem.EmbeddedObjects) Then
                    RichTextItemNames(itemCount) = Cstr(i.Name)
                    itemCount = itemCount + 1
                End If
            End If

        End Forall      

        'Loop through richtext items and extract the embedded attachments
        For j = 0 To itemCount - 1 
            Set rtItem = doc.GetfirstItem(RichTextItemNames(j))
            Forall Obj In rtItem.EmbeddedObjects
                If ( Obj.Type = EMBED_ATTACHMENT ) Then
                    Call ExportAttachment(Obj)
                    Call Obj.Remove
                    Call doc.Save( False, True )  'creates conflict doc if conflict exists
                End If 
            End Forall 
        Next

        'Scan all items in document for Attachment type items
        itemCount = 0
        Forall i In doc.Items           
            If i.Type = ATTACHMENT Then

                DocumentItemNames(itemCount) = i.Values(0)
                itemCount = itemCount + 1

            End If          
        End Forall

        'Loop through all attachment items in document and extract them
        For j = 0 To itemCount - 1 
            Set attachmentObject = doc.GetAttachment(DocumentItemNames(j))
            Call ExportAttachment(attachmentObject)
            Call attachmentObject.Remove            
            Call doc.Save( False, True ) 'creates conflict doc if conflict exists
        Next        

        Set doc = dc.GetNextDocument(doc)
    Wend

End Sub

Sub ExportAttachment(o As Variant)

    Dim sAttachmentName As String
    Dim sNum As String
    Dim sTemp As String

    ' Append number to end of filename if filename exists.
    sAttachmentName = sDir & "\" & o.Source
    While Not (Dir$(sAttachmentName, 0) = "")
        sNum = Right(Strleftback(sAttachmentName, "."), 2)
        If Isnumeric(sNum) Then
            sTemp = Strleftback(sAttachmentName, ".")
            sTemp = Left(sTemp, Len(sTemp) - 2)
            sAttachmentName = sTemp & Format$(Cint(sNum) + 1, "##00") & _
            "." & Strrightback(sAttachmentName, ".")
        Else
            sAttachmentName = Strleftback(sAttachmentName, ".") & _
            "01." & Strrightback(sAttachmentName, ".")
        End If
    Wend

    Print "Exporting " & sAttachmentName
    'Save the file
    Call o.ExtractFile( sAttachmentName )


End Sub