Sample code for 30+ languages & platforms
DataFlex

Send Email and Put Copy in "Sent" Folder

This example demonstrates how to send an email, and then put a copy of it in the "Sent" mail folder. This is only possible if the "Sent" folder is located on the mail server and accessed via the IMAP protocol. The POP3 protocol can only access the Inbox on the mail server.

This does not work with "Sent", "Sent Items", or "Sent Messages" folders that are stored locally on your computer by an email client such as Outlook or Thunderbird. Chilkat has no ability to copy email to the local files managed by these email clients.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vEmail
    Handle hoEmail
    Handle hoImap
    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 mailman object is used for sending and receiving email.
    Get Create (RefClass(cComChilkatMailMan)) To hoMailman
    If (Not(IsComObjectCreated(hoMailman))) Begin
        Send CreateComObject of hoMailman
    End

    // Set the SMTP server.
    Set ComSmtpHost Of hoMailman To "smtp.my-mail-server.com"

    // Set the SMTP login/password (if required)
    Set ComSmtpUsername Of hoMailman To "myUsername"
    Set ComSmtpPassword Of hoMailman To "myPassword"

    // Create a new email object
    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End

    Set ComSubject Of hoEmail To "This is a test"
    Set ComBody Of hoEmail To "This is a test"
    Set ComFrom Of hoEmail To "Chilkat Support <support@chilkatsoft.com>"
    Get ComAddTo Of hoEmail "Chilkat Admin" "admin@chilkatsoft.com" To iSuccess
    // To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.

    // Call SendEmail to connect to the SMTP server and send.
    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

    // Some SMTP servers do not actually send the email until 
    // the connection is closed.  In these cases, it is necessary to
    // call CloseSmtpConnection for the mail to be  sent.  
    // Most SMTP servers send the email immediately, and it is 
    // not required to close the connection.  We'll close it here
    // for the example:
    Get ComCloseSmtpConnection Of hoMailman To iSuccess
    If (iSuccess <> True) Begin
        Showln "Connection to SMTP server not closed cleanly."

    End

    Showln "Mail Sent!"

    // The mail has been sent.  Now save the email to the "Sent" folder
    // on your mail server.  (Your "Sent" folder could be named something else,
    // or you may store the email in any folder of your choosing.)
    Get Create (RefClass(cComChilkatImap)) To hoImap
    If (Not(IsComObjectCreated(hoImap))) Begin
        Send CreateComObject of hoImap
    End

    // Connect to an IMAP server.
    // Use TLS
    Set ComSsl Of hoImap To True
    Set ComPort Of hoImap To 993
    Get ComConnect Of hoImap "imap.my-mail-server.com" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Login
    Get ComLogin Of hoImap "myLogin" "myPassword" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Upload (save) the email to the "Sent" mailbox.
    Get pvComObject of hoEmail to vEmail
    Get ComAppendMail Of hoImap "Sent" vEmail To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoImap To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Showln "Email saved to the Sent folder."

    // Disconnect from the IMAP server.
    Get ComDisconnect Of hoImap To iSuccess


End_Procedure