Sample code for 30+ languages & platforms
PureBasic

SMTP NTLM Authentication

See more SMTP Examples

Demonstrates how to specify NTLM authentication for sending email via SMTP.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

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

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

    ; Specify your particular mail server's SMTP settings.
    CkMailMan::setCkSmtpHost(mailman, "smtp.my_mail_server.com")
    CkMailMan::setCkSmtpPort(mailman, 587)
    CkMailMan::setCkStartTLS(mailman, 1)

    ; This assumes you know your SMTP server supports NTLM authentication.
    ; To explicitly request NTLM authentication, set the SmtpAuthMethod property = "ntlm".
    CkMailMan::setCkSmtpAuthMethod(mailman, "ntlm")

    ; Note: Normally you should avoid setting the SmtpAuthMethod.
    ; SMTP servers tell the connecting client the authentication methods it will accept when the initial connection is made.
    ; Chilkat will automatically use this information to select and use the most secure auth method supported by the server.

    useCurrentWindowsUser.i = 1

    If useCurrentWindowsUser = 1
        ; If you are running on Windows, and you wish for the NTLM credentials of the current logged-on Windows user to be used,
        ; set the username and password to the string "default"
        CkMailMan::setCkSmtpUsername(mailman, "default")
        CkMailMan::setCkSmtpPassword(mailman, "default")
    Else
        ; Explicitly specify the SMTP username/password
        ; The SMTP username is your email account username, which is often your email address.
        CkMailMan::setCkSmtpUsername(mailman, "your_smtp_username_or_email_address")
        CkMailMan::setCkSmtpPassword(mailman, "your_password")
    EndIf

    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")
    ; Don't forget to change this to use your email addresses..
    CkEmail::setCkFrom(email, "Chilkat Support <support@chilkatsoft.com>")
    success = CkEmail::ckAddTo(email,"Chilkat Admin","admin@chilkatsoft.com")
    ; To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.

    success = CkMailMan::ckSendEmail(mailman,email)
    If success <> 1
        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

    Debug "Mail Sent!"


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


    ProcedureReturn
EndProcedure