Visual FoxPro
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
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