Lotus notes 调用getEmbeddedObjects();(Domino服务器API)返回错误的结果
Domino服务器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
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