Sample code for 30+ languages & platforms
DataFlex

Save an Email to a .eml File

See more Email Object Examples

Demonstrates the Chilkat Email.SaveEml method, which converts the email object to EML and saves it to a file. An EML file contains the complete RFC822/MIME message — headers, bodies, related items, and attachments. This example builds a message and saves it.

Background: Saving as .eml writes the message in the universal MIME format that virtually every mail client can open, making it ideal for archiving, sharing, or handing a message to another program. It is the counterpart to LoadEml. A saved .eml also retains Chilkat's CKX- metadata headers (a way to store your own metadata with the email; they are always stripped before an email is sent), so .eml is the recommended way to persist a message even within Chilkat-based software. A separate Chilkat XML format (SaveXml) exists as an alternative, but offers no metadata advantage over .eml.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoEmail
    String sTemp1

    Move False To iSuccess

    //  Demonstrates the SaveEml method, which converts the email object to EML and saves it to
    //  a file.  An EML file contains the complete RFC822/MIME message, including headers,
    //  bodies, related items, and attachments.

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End
    Set ComSubject Of hoEmail To "Save as EML"
    Set ComFrom Of hoEmail To "alice@example.com"
    Get ComAddTo Of hoEmail "Bob" "bob@example.com" To iSuccess
    Set ComBody Of hoEmail To "Hello, this message will be saved as a .eml file."

    //  Save the email to a .eml file.
    Get ComSaveEml Of hoEmail "qa_output/message.eml" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoEmail To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Saved to message.eml."

    //  Note: The path "qa_output/..." is a relative local filesystem path,
    //  relative to the current working directory of the running application.


End_Procedure