I do Code - A Weblog by Finn Ladegaard Knudsen. About Code and things related to Code

NotesMimeEntity: Attach a file to MIME

Finn L. Knudsen  1 December 2008 21:13:15
Here is the simple way to attach (and base64 encode) a file to MIME.


Function MimeAttachFileAsBase64(mime As NotesMimeEntity, sFolderPath As String, sFileName As String) As Boolean
       On Error Goto ERRHANDLER
       Dim sess As New NotesSession
       Dim nsFile As NotesStream
       Dim mimeChild As NotesMimeEntity
       Dim mimeheader As NotesMimeHeader
       Dim sContentType As String
       
       MimeAttachFile = False
       Set nsFile = sess.CreateStream()
       If Not  nsFile.Open(sFolderPath & sFileName, "Binary") Then
               Print "MimeAttachFileAsBase64 Error: Failed to open file: " & sFolderPath & sFileName
               Err = 0
               Exit Function
       End If
       Set mimeChild = mime.CreateChildEntity()
       sContentType = |application/octet-stream| ' application/octet-stream is a default value
       
       Call mimeChild.SetContentFromBytes( nsFile, sContentType & |; name="| & sFileName & |"|, ENC_NONE)  
       
       ' base64 encode the file
       Call mimeChild.EncodeContent( ENC_BASE64)
       
       ' Content-Disposition header
       Set mimeheader = mimeChild.createHeader("Content-Disposition")
       Call mimeheader.SetHeaderVal(|attachment; filename="| & sFileName & |"|)

       ' close stream and cleanup
       Call nsFile.Close()
       Set nsFile = Nothing
       MimeAttachFile = True
       Exit Function
       
ERRHANDLER:        
       Print "MimeAttachFileAsBase64 Error: " & Format$(Err) & " " & Error & " # Line: " & Format$(Erl)
       Err = 0
       Exit Function
End Function
Technorati Profile Add to Technorati Favorites