Sample code for 30+ languages & platforms
PureBasic

Send Email and Save Copy to "Sent" Mailbox

Sends an email and places a copy in the "Sent" mailbox on an IMAP server.

This example demonstrates how to send an email and then upload a copy to an IMAP mail server's "Sent" mailbox. Note: You may need to create a "Sent" mailbox on your IMAP server prior to running this example. You may already have a mailbox named something different -- perhaps "Sent Items".

Important: If your mail server is POP3, the "Sent Items" mailbox is actually a file on your local computer managed by your email client, such as Outlook, Mozilla Thunderbird. This example does not save emails to Outlook or Mozilla Thunderbird "Sent Items" local files.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkImap.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkMailMan.pb"

Procedure ChilkatExample()

    success.i = 0

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

    success = 0

    ; The mailman object is used for sending (SMTP) and receiving (POP3) email.
    mailman.i = CkMailMan::ckCreate()
    If mailman.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Set the SMTP server.
    CkMailMan::setCkSmtpHost(mailman, "mail.mydomain.com")
    CkMailMan::setCkSmtpUsername(mailman, "myLogin")
    CkMailMan::setCkSmtpPassword(mailman, "myPassword")

    ; Create a new email object
    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkEmail::setCkSubject(email, "This is a test")
    CkEmail::setCkBody(email, "This is a test")
    CkEmail::setCkFrom(email, "Myself <myself@mydomain.com>")
    success = CkEmail::ckAddTo(email,"Somebody","somebody@somedomain.com")

    success = CkMailMan::ckSendEmail(mailman,email)
    If success <> 1
        Debug CkMailMan::ckLastErrorText(mailman)
        CkMailMan::ckDispose(mailman)
        CkEmail::ckDispose(email)
        ProcedureReturn
    EndIf

    Debug "Mail Sent!"

    ; Now use Chilkat IMAP to save the email to Inbox.Sent

    imap.i = CkImap::ckCreate()
    If imap.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Connect to an IMAP server.
    ; Use TLS
    CkImap::setCkSsl(imap, 1)
    CkImap::setCkPort(imap, 993)
    success = CkImap::ckConnect(imap,"mail.mydomain.com")
    If success <> 1
        Debug CkImap::ckLastErrorText(imap)
        CkMailMan::ckDispose(mailman)
        CkEmail::ckDispose(email)
        CkImap::ckDispose(imap)
        ProcedureReturn
    EndIf

    ; Login
    success = CkImap::ckLogin(imap,"myLogin","myPassword")
    If success <> 1
        Debug CkImap::ckLastErrorText(imap)
        CkMailMan::ckDispose(mailman)
        CkEmail::ckDispose(email)
        CkImap::ckDispose(imap)
        ProcedureReturn
    EndIf

    ; The AppendMail method uploads an email to an IMAP server
    ; and saves it in the mailbox specified:
    success = CkImap::ckAppendMail(imap,"Inbox.Sent",email)
    If success <> 1
        Debug CkImap::ckLastErrorText(imap)
        CkMailMan::ckDispose(mailman)
        CkEmail::ckDispose(email)
        CkImap::ckDispose(imap)
        ProcedureReturn
    EndIf

    Debug "Mail saved to Inbox.Sent"


    CkMailMan::ckDispose(mailman)
    CkEmail::ckDispose(email)
    CkImap::ckDispose(imap)


    ProcedureReturn
EndProcedure