Sample code for 30+ languages & platforms
PureBasic

SMTP Inspection

See more SMTP Examples

Examine an SMTP session to view all communications sent to the SMTP server.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

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

    CkMailMan::setCkSmtpHost(mailman, "smtp.example.com")
    CkMailMan::setCkSmtpUsername(mailman, "myUsername")
    CkMailMan::setCkSmtpPassword(mailman, "myPassword")

    CkMailMan::setCkSmtpPort(mailman, 465)
    CkMailMan::setCkStartTLS(mailman, 1)

    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, "Alex <alex@example.com>")
    CkEmail::ckAddTo(email,"Christoph","christoph@example2.com")
    CkEmail::ckAddBcc(email,"Victor","victor@example3.com")

    ; Generate the MIME that is sent when SendEmail is called
    mimeStr.s = CkMailMan::ckRenderToMime(mailman,email)
    Debug mimeStr

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

    success = CkMailMan::ckCloseSmtpConnection(mailman)
    If success <> 1
        Debug "Connection to SMTP server not closed cleanly."
    EndIf

    ; Examine the SMTP session log.
    Debug "----"
    Debug "Smtp Session Log:"
    Debug CkMailMan::ckSmtpSessionLog(mailman)

    ; ---------------------------------------------------
    ; Sample output:
    ; ---------------------------------------------------

    ; MIME-Version: 1.0
    ; Date: Fri, 06 Mar 2026 16:21:00 -0600
    ; Message-ID: <A5DC25990C93EC2676F4FBB2BB3BFA9EB34FF9D3@CHILKAT25>
    ; Content-Type: text/plain; charset=us-ascii; format=flowed
    ; Content-Transfer-Encoding: 7bit
    ; X-Priority: 3 (Normal)
    ; Subject: This is a test
    ; From: Alex <alex@example.com>
    ; To: Christoph <christoph@example2.com>
    ; Bcc: Victor <victor@example3.com>
    ; 
    ; This is a test
    ; ----
    ; Smtp Session Log:
    ; 220 smtp.example.com ESMTP Amazon WorkMail SMTP Service
    ; EHLO MYCOMPUTER<CRLF>
    ; 250-smtp.example.com
    ; 250-8BITMIME
    ; 250-AUTH PLAIN LOGIN
    ; 250 Ok
    ; AUTH LOGIN<CRLF>
    ; 334 VXNlcm5hbWU6
    ; YWRtaW5AY2hpbGthdHNvZnQuY29t<CRLF>
    ; 334 UGFzc3dvcmQ6
    ; {PasswordOrCredentials}
    ; 235 Authentication successful.
    ; MAIL FROM:<alex@example.com><CRLF>
    ; 250 Ok
    ; RCPT TO:<christoph@example2.com><CRLF>
    ; 250 Ok
    ; RCPT TO:<victor@example3.com><CRLF>
    ; 250 Ok
    ; DATA<CRLF>
    ; 354 End data with <CR><LF>.<CR><LF>
    ; {388 bytes} <--- The MIME source of the email (examined via RenderToMime) was sent here.
    ; <CRLF>.<CRLF>
    ; 250 Ok
    ; QUIT<CRLF>
    ; 221 Bye


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


    ProcedureReturn
EndProcedure