Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) SMTP Login SecureDemonstrates how to set the SMTP password using a secure string. This example requires Chilkat v9.5.0.71 or greater.
IncludeFile "CkCrypt2.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkSecureString.pb" IncludeFile "CkMailMan.pb" Procedure ChilkatExample() ; 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 success.i ; 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==" ; } json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoadFile(json,"qa_data/passwords/smtp.json") crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; These are the encryption settings we previously used to encrypt the credentials within the JSON config file. CkCrypt2::setCkCryptAlgorithm(crypt, "aes") CkCrypt2::setCkCipherMode(crypt, "cbc") CkCrypt2::setCkKeyLength(crypt, 128) CkCrypt2::ckSetEncodedKey(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::ckSetEncodedIV(crypt,"000102030405060708090A0B0C0D0E0F","hex") CkCrypt2::setCkEncodingMode(crypt, "base64") ssLogin.i = CkSecureString::ckCreate() If ssLogin.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ssPassword.i = CkSecureString::ckCreate() If ssPassword.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Decrypt to the secure string. (the strings will still held in memory encrypted, but are now encrypted using ; a randomly generated session key.) CkCrypt2::ckDecryptSecureENC(crypt,CkJsonObject::ckStringOf(json,"smtp_login"),ssLogin) CkCrypt2::ckDecryptSecureENC(crypt,CkJsonObject::ckStringOf(json,"smtp_password"),ssPassword) ; Set the SMTP domain, login, and password CkMailMan::setCkSmtpHost(mailman, "smtp.gmail.com") CkMailMan::setCkSmtpSsl(mailman, 1) CkMailMan::setCkSmtpPort(mailman, 465) CkMailMan::setCkSmtpUsername(mailman, CkSecureString::ckAccess(ssLogin)) ; Set the SmtpPassword property via the SetPassword method using the secure string. CkMailMan::ckSetPassword(mailman,"smtp",ssPassword) ; Connect and authenticate.. success = CkMailMan::ckSmtpConnect(mailman) If success <> 1 Debug CkMailMan::ckLastErrorText(mailman) CkMailMan::ckDispose(mailman) CkJsonObject::ckDispose(json) CkCrypt2::ckDispose(crypt) CkSecureString::ckDispose(ssLogin) CkSecureString::ckDispose(ssPassword) ProcedureReturn EndIf success = CkMailMan::ckSmtpAuthenticate(mailman) If success <> 1 Debug CkMailMan::ckLastErrorText(mailman) CkMailMan::ckDispose(mailman) CkJsonObject::ckDispose(json) CkCrypt2::ckDispose(crypt) CkSecureString::ckDispose(ssLogin) CkSecureString::ckDispose(ssPassword) ProcedureReturn EndIf Debug "SMTP login successful." ; ... CkMailMan::ckCloseSmtpConnection(mailman) CkMailMan::ckDispose(mailman) CkJsonObject::ckDispose(json) CkCrypt2::ckDispose(crypt) CkSecureString::ckDispose(ssLogin) CkSecureString::ckDispose(ssPassword) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.