Sample code for 30+ languages & platforms
DataFlex

Create Email with Non-Standard Binary Body

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMime
    String sStrMime
    Handle hoEmail
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatMime)) To hoMime
    If (Not(IsComObjectCreated(hoMime))) Begin
        Send CreateComObject of hoMime
    End

    Get ComSetBodyFromFile Of hoMime "VoiceMessage.wav" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoMime To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The MIME has this header:
    // Content-Disposition: attachment;
    // 	 filename="VoiceMessage.wav"
    // Content-Transfer-Encoding: base64
    // Content-Type: audio/x-wav;
    // 	name="VoiceMessage.wav"

    // We don't want the content-disposition to be an
    // attachment -- otherwise the email object will self-correct
    // and put it in a multipart/mixed format...
    Set ComDisposition Of hoMime To ""
    Set ComFilename Of hoMime To ""

    Get ComGetMime Of hoMime To sStrMime
    Showln sStrMime

    // Now load it into an email object:
    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End
    Get ComSetFromMimeText Of hoEmail sStrMime To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Add subject, TO, FROM, etc.
    Set ComSubject Of hoEmail To "This is a test"
    Set ComFrom Of hoEmail To "support@chilkatsoft.com"
    Get ComAddTo Of hoEmail "Matt" "matt@chilkatsoft.com" To iSuccess

    // Your email is ready to send.
    // (but for this example, we'll simply save it to a file...)
    Get ComSaveEml Of hoEmail "email.eml" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "OK!"


End_Procedure