Sample code for 30+ languages & platforms
DataFlex

Create Non-Multipart Email with XML Body that is an Attachment

See more SMTP Examples

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
    String sXmlBody
    Variant vEmail
    Handle hoEmail
    Handle hoMailman
    String sTemp1

    Move False To iSuccess

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

    // The goal of this example is to create an email that has this MIME format,
    // where the body of the email is XML using base64 encoding, 
    // and the Content-Type and Content-Disposition are set as indicated.

    // Date: Wed, 23 Aug 2023 09:01:52 +0200 (CEST)
    // From: joe@example1.com
    // Subject: [v=EMCS.NL][a=NL****][k=****][s=0]
    // To: mary@example2.com
    // MIME-Version: 1.0
    // Content-Type: application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
    // Content-Transfer-Encoding: Base64
    // Content-Disposition: attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt
    // Message-Id: <......>
    // 
    // <multi-line base64 encoded XML here>

    Move True To iSuccess

    Move '<ie:IE801 xmlns:ie="urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:IE801:V3.01" xmlns:tms="urn:publicid:-:EC:DGTAXUD:EMCS:PHASE4:TMS:V3.01">....</ie:IE801>' To sXmlBody

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End

    // Add subject, TO, FROM, etc.
    Set ComSubject Of hoEmail To "[v=EMCS.NL][a=NL****][k=****][s=0]"
    Set ComFrom Of hoEmail To "joe@example1.com"
    Get ComAddTo Of hoEmail "Mary" "mary@example2.com" To iSuccess

    Set ComBody Of hoEmail To sXmlBody

    Send ComAddHeaderField To hoEmail "Content-Transfer-Encoding" "Base64"
    Send ComAddHeaderField To hoEmail "Content-Type" "application/octet-stream; charset=us-ascii; name=6bd8dfe259b3a42c90a28a82b5fc6e77.txt"
    Send ComAddHeaderField To hoEmail "Content-Disposition" "attachment; filename=6bd8dfe259b3a42c90a28a82b5fc6e77.txt"

    // Your email is ready to send
    Get Create (RefClass(cComChilkatMailMan)) To hoMailman
    If (Not(IsComObjectCreated(hoMailman))) Begin
        Send CreateComObject of hoMailman
    End

    Set ComSmtpHost Of hoMailman To "smtp.my_mail_server.com"
    Set ComSmtpUsername Of hoMailman To "myUsername"
    Set ComSmtpPassword Of hoMailman To "myPassword"
    Set ComSmtpPort Of hoMailman To 465
    Set ComSmtpSsl Of hoMailman To True
    Set ComStartTLS Of hoMailman To True

    Get pvComObject of hoEmail to vEmail
    Get ComSendEmail Of hoMailman vEmail To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComCloseSmtpConnection Of hoMailman To iSuccess
    If (iSuccess <> True) Begin
        Showln "Connection to SMTP server not closed cleanly."
    End

    Showln "Mail Sent!"


End_Procedure