LotusScript无法从电子邮件中获取文件附件

时间:2013-04-30 14:39:12

标签: lotus-notes mime lotus-domino lotusscript richtext

我从未遇到过这个问题,但我无法处理电子邮件中的文件附件。我有代码可以搜索文档中的嵌入对象或搜索字段中的嵌入对象 - 它们都没有返回文件。我可以在电子邮件中看到该文件,我可以看到包含文件附件的$ FILE字段。

以下是代码:

    Function FileDetachFiles(doc As NotesDocument, fieldName As String, getFromField As Integer) As Variant

    On Error Goto ProcessError

    Dim s As NotesSession
    Dim db As NotesDatabase
    Dim rtItem As NotesRichTextItem
    Dim fileToExtract As String
    Dim fileName As String
    Dim fileArray() As String
    Dim message As String
    Dim embedObjects As Variant
    Dim attachFile As Integer
    Dim x As Integer

    Set s = New NotesSession    
    Set db = s.CurrentDatabase
    Const fileImport = "C:\"
    attachFile = False

    'Let's see if there are attached files...
    If getFromField = True Then
        'Locate field and get files...
        If doc.HasEmbedded Then
            If doc.HasItem(fieldName) Then          
                'Set the first field...
                Set rtItem = doc.GetFirstItem(fieldName)
                embedObjects = rtItem.EmbeddedObjects
                If Isarray(embedObjects) Then
                    Forall Files In rtItem.EmbeddedObjects
                        If Files.Type = EMBED_ATTACHMENT Then
                            fileName = Files.Source
                            fileToExtract = fileImport & fileName
                            Redim Preserve fileArray(x)
                            fileArray(x) = fileToExtract
                            x = x + 1
                            Call Files.ExtractFile(fileToExtract)   
                            attachFile = True               
                        End If          
                    End Forall
                End If
            End If
        End If
    Else    
        x = 0       
        'Go through doc looking for all embedded objects...
        If doc.HasEmbedded Then
            Forall o In doc.EmbeddedObjects
                If o.Type = EMBED_ATTACHMENT Then
                    fileName = o.Name
                    fileToExtract = fileImport & fileName
                    Call o.ExtractFile(fileToExtract)
                    Redim Preserve fileArray(x)
                    fileArray(x) = fileToExtract
                    x = x + 1
                    attachFile = True       
                End If      
            End Forall
        End If      
    End If

    If attachFile = True Then       
        FileDetachFiles = fileArray
    End If

    Exit Function
ProcessError:
    message = "Error (" & Cstr(Err) & "): " & Error$ & " on line " & Cstr(Erl) & " in GlobalUtilities: " & Lsi_info(2) & "."
    Messagebox message, 16, "Error In Processing..."
    Exit Function
End Function

我尝试了上面的两个例程 - 传递$ FILE和Body字段名称,以及搜索文档。它找不到任何文件附件。

我甚至试过这个: Extracting attachments as MIME using LotusScript

在文档中找不到任何MIME。

我从未遇到过这个问题 - 任何想法都会很棒。

谢谢!

1 个答案:

答案 0 :(得分:6)

之前我曾经有过,但遗憾的是,它不记得它来自哪里,可能需要对来自Domino网站的V2-Style Attachments做些什么...... 尝试Evaluate(@AttachmentNames)以获取包含所有附件名称的Variant。然后使用Forall循环遍历它并尝试NotesDocument.getAttachment(strLoopValue) - 函数来获取附件的句柄。 有关详细信息,请阅读here并按照该页面上的链接进行操作,尤其是this one

代码将是这样的:

Dim doc as NotesDocument
Dim varAttachmentNamens as Variant
Dim object as NotesEmbeddedObject    

REM "Get the document here"
varAttachmentNames = Evaluate( "@AttachmentNames" , doc )
Forall strAttachmentName in varAttachmentNames
  Set object = doc.GetAttachment( strAttachmentName )
  REM "Do whatever you want..."
End Forall
相关问题