Sample code for 30+ languages & platforms
Visual FoxPro

SMTP Login Secure

Demonstrates how to set the SMTP password using a secure string.

This example requires Chilkat v9.5.0.71 or greater.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loMailman
LOCAL loJson
LOCAL loCrypt
LOCAL loSsLogin
LOCAL loSsPassword

lnSuccess = 0

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

loMailman = CreateObject('Chilkat.MailMan')

* Imagine we've previously saved our encrypted login and password within a JSON config file
* that contains this:

* {
*   "smtp_login": "D7lnlWY291LKMeChlvQq7N/Tg7ieuSB15a+9Ekyd0R4=",
*   "smtp_password": "5neIq9Jmn0E3p71N6Yc8TA=="
* }

loJson = CreateObject('Chilkat.JsonObject')
loJson.LoadFile("qa_data/passwords/smtp.json")

loCrypt = CreateObject('Chilkat.Crypt2')

* These are the encryption settings we previously used to encrypt the credentials within the JSON config file.
loCrypt.CryptAlgorithm = "aes"
loCrypt.CipherMode = "cbc"
loCrypt.KeyLength = 128
loCrypt.SetEncodedKey("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.SetEncodedIV("000102030405060708090A0B0C0D0E0F","hex")
loCrypt.EncodingMode = "base64"

loSsLogin = CreateObject('Chilkat.SecureString')
loSsPassword = CreateObject('Chilkat.SecureString')

* Decrypt to the secure string.  (the strings will still held in memory encrypted, but are now encrypted using
* a randomly generated session key.)
loCrypt.DecryptSecureENC(loJson.StringOf("smtp_login"),loSsLogin)
loCrypt.DecryptSecureENC(loJson.StringOf("smtp_password"),loSsPassword)

* Set the SMTP domain, login, and password
loMailman.SmtpHost = "smtp.gmail.com"
loMailman.SmtpSsl = 1
loMailman.SmtpPort = 465

loMailman.SmtpUsername = loSsLogin.Access()
* Set the SmtpPassword property via the SetPassword method using the secure string.
loMailman.SetPassword("smtp",loSsPassword)

* Connect and authenticate..
lnSuccess = loMailman.SmtpConnect()
IF (lnSuccess <> 1) THEN
    ? loMailman.LastErrorText
    RELEASE loMailman
    RELEASE loJson
    RELEASE loCrypt
    RELEASE loSsLogin
    RELEASE loSsPassword
    CANCEL
ENDIF

lnSuccess = loMailman.SmtpAuthenticate()
IF (lnSuccess <> 1) THEN
    ? loMailman.LastErrorText
    RELEASE loMailman
    RELEASE loJson
    RELEASE loCrypt
    RELEASE loSsLogin
    RELEASE loSsPassword
    CANCEL
ENDIF

? "SMTP login successful."

* ...

loMailman.CloseSmtpConnection()

RELEASE loMailman
RELEASE loJson
RELEASE loCrypt
RELEASE loSsLogin
RELEASE loSsPassword