Jump to content

EmailConfig.au3 UDF - support topic


Recommended Posts

This UDF was created to facilitate the saving and reading of email configuration.
Thanks to @water, @jchd, @Jos for helping in translation of _EmailConfig_GUI_Preset_**()
Hope to have _EmailConfig_GUI_Preset_ES() version soon.

If you want to create your national version of _EmailConfig_GUI_Preset_**() please do not hesitate ... contribute.

_EmailConfig_GUI_Preset_EN() is translated by me and Google Translator (from my national Polish language), so if you have any fix for this please do not hesitate ... contribute.

 

The EmailConfig_Example_STMP_Mailer.au3   is using modified version of Jos SMTP Mailer UDF

 

#AutoIt3Wrapper_UseX64=N
#AutoIt3Wrapper_Run_AU3Check=Y
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#Tidy_Parameters=/sort_funcs /reel

#include <Array.au3>
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <Crypt.au3>
#include <EditConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#include "EmailConfig.au3"
#include "GDPR.au3" ; https://www.autoitscript.com/forum/files/file/509-gdpr/

Global $oMyRet[2]

#Region - EXAMPLE
_MY_EXAMPLE__EmailConfig()

Func _MY_EXAMPLE__EmailConfig()
    _GDPR_Crypter_Wrapper(_EmailConfig_ExampleCrypter)

    _EmailConfig_GUI_Preset_EN()
;~  _EmailConfig_GUI_Preset_DE()
;~  _EmailConfig_GUI_Preset_FR()
;~  _EmailConfig_GUI_Preset_NL()
;~  _EmailConfig_GUI_Preset_PL()

    _EmailConfig_SaveWrapper(_EmailConfig_SaveToINI)
    _EmailConfig_LoadWrapper(_EmailConfig_LoadFromINI)
    _EmailConfig_LoadWrapper()

    If $IDYES = MsgBox($MB_YESNO + $MB_TOPMOST + $MB_ICONQUESTION + $MB_DEFBUTTON1, 'Question #' & @ScriptLineNumber, _
            'Do you want to set email configuration ?') Then
        _EmailConfig_ShowGUI()
    EndIf

    Local $s_ToAddress = 'whereisyourdestination@your.email.com'
    Local $s_Subject = 'Testing email sending : ' & @YEAR & @MON & @MDAY & ' ' & @HOUR & @MIN & @SEC
    Local $s_Body = 'This is only a test'
    Local $s_Attachments = ''
    _SMTP_SendEmail_Example($s_ToAddress, $s_Subject, $s_Body, $s_Attachments)
EndFunc   ;==>_MY_EXAMPLE__EmailConfig

Func _EmailConfig_ExampleCrypter($dBinaryData, $bDataAlreadyEncrypted)
    _Crypt_Startup()     ; Start the Crypt library.
    Local $dResult
    If $bDataAlreadyEncrypted Then
        $dResult = _Crypt_DecryptData($dBinaryData, 'securepassword', $CALG_AES_256) ; Decrypt the data using the generic password string. The return value is a binary string.
    Else
        $dResult = _Crypt_EncryptData($dBinaryData, 'securepassword', $CALG_AES_256) ; Encrypt the text with the new cryptographic key.
    EndIf
    _Crypt_Shutdown()     ; Shutdown the Crypt library.
    Return $dResult
EndFunc   ;==>_EmailConfig_ExampleCrypter

#EndRegion - EXAMPLE

;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0, $tls = 0)
    Local $oCOM_Error_Handler = ObjEvent("AutoIt.Error", "MyErrFunc")
    #forceref $oCOM_Error_Handler

    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    #forceref $i_Error
    Local $i_Error_desciption = ""
    #forceref $i_Error_desciption
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
;~          ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 Then $IPPort = 25
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ; Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    ; Set security params
    If $ssl Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    If $tls Then $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendtls") = True
    ; Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail = ""
EndFunc   ;==>_INetSmtpMailCom

Func _SMTP_SendEmail_Example($s_ToAddress, $s_Subject, $s_Body, $s_Attachments)
    #Tidy_ILC_Pos=120
    Local $aEMAIL_CONFIG = __EmailConfig__API()
    Local $SmtpServer = $aEMAIL_CONFIG[$EMAIL_CONFIG__22__SMTP_SERVER_NAME][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]        ; address for the smtp-server to use - REQUIRED
    Local $FromName = $aEMAIL_CONFIG[$EMAIL_CONFIG__02__COMMON_NAME][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]               ; name from who the email was sent
    Local $FromAddress = $aEMAIL_CONFIG[$EMAIL_CONFIG__03__EMAIL_ADDRESS][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]          ; address from where the mail should come
    Local $ToAddress = $s_ToAddress                                                                                    ; destination address of the email - REQUIRED
    Local $Subject = $s_Subject                                                                                        ; subject from the email - can be anything you want it to be
    Local $Body = $s_Body                                                                                              ; the messagebody from the mail - can be left blank but then you get a blank mail
    Local $AttachFiles = $s_Attachments                                                                                ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
    Local $CcAddress = ""                                                                                              ; address for cc - leave blank if not needed
    Local $BccAddress = ""                                                                                             ; address for bcc - leave blank if not needed
    Local $Importance = "Normal"                                                                                       ; Send message priority: "High", "Normal", "Low"
    Local $Username = $aEMAIL_CONFIG[$EMAIL_CONFIG__20__SMTP_USER_NAME][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]            ; username for the account used from where the mail gets sent - REQUIRED
    Local $Password = $aEMAIL_CONFIG[$EMAIL_CONFIG__21__SMTP_PASSWORD][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]             ; password for the account used from where the mail gets sent - REQUIRED
    Local $IPPort = $aEMAIL_CONFIG[$EMAIL_CONFIG__23__SMTP_PORT_NUMBER][$EMAIL_CONFIG__COL3_SAVELOAD_VALUE]            ; port used for sending the mail ; in many country port 25 is not recomended, in such case use 587 instead
    Local $ssl = 0                                                                                                     ; enables/disables secure socket layer sending - put to 1 if using httpS
    Local $tls = 0                                                                                                     ; enables/disables TLS when required
;~  Local $IPPort = 465                                                                                                ; GMAIL port used for sending the mail
;~  Local $ssl = 1                                                                                                     ; GMAIL enables/disables secure socket layer sending - put to 1 if using httpS
    Local $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl, $tls)
    If @error Then
        MsgBox(0, "Error sending email", "Error code: " & @error & @CRLF & "Description: " & $rc)
    EndIf
EndFunc   ;==>_SMTP_SendEmail_Example
;
;
; Com Error Handler
Func MyErrFunc(ByRef $oMyError)
    Local $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1)                                                                                                        ; something to check for when this function returns
    Return
EndFunc   ;==>MyErrFunc

 

image.png.6b896ec9a21bb9ff790c45dad1f609e2.png

 

EmailConfig.au3 EmailConfig_Example_STMP_Mailer.au3

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * for other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE *

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2021-10-18

Link to post
Share on other sites
  • mLipok changed the title to EmailConfig.au3 UDF - support topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By mLipok
      Yeasterday I found this:
      https://stackoverflow.com/questions/496751/base64-encode-string-in-vbscript
      https://www.motobit.com/tips/detpg_quoted-printable-encode/
      https://www.motobit.com/tips/detpg_quoted-printable-decode/
      Here is AutoIt Version:
      #Region - QuotedPrintableEncode_Binary ;~ https://www.motobit.com/tips/detpg_quoted-printable-encode/ ; This article contains a short function for quoted printable encoding, using CDO.Message object. ; You can use this function in ASP or .VBS files (wsh - windows scripting host files), or directly in VBA (visual basic 5, 6, Word, Excel, Access and Outlook scripting). ; A source data of this function is a String variable and charset parameter of destination data. ; The source string (16bit VBScript BSTR variable) is first converted to a destination charset, using ADODB.Stream (GetDecodedContentStream). ; If the destination charset is not specified, the ADODB.Stream uses "iso-8859-1" by default. ; The EncodedContentStream then converts the binary data to a Quoted-Printable output string. ; VBScript QuotedPrintable encoding ; 2005 Antonin Foller http://www.motobit.com ; $s_SourceString - string variable with source data, BSTR type ; $s_CharSet - $s_CharSet of the destination data Func _QuotedPrintable_Encode($s_SourceString, $s_CharSet) ;Create CDO.$oCDOMessage object For the encoding. Local $oCDOMessage = ObjCreate("CDO.Message") ; Set the encoding $oCDOMessage.BodyPart.ContentTransferEncoding = "quoted-printable" ; Get the data $oStream To write source string data ; As ADODB.$oStream Local $oStream = $oCDOMessage.BodyPart.GetDecodedContentStream ; Set the $s_CharSet For the destination data, If required If StringLen($s_CharSet) > 0 Then $oStream.CharSet = $s_CharSet ; Write the VBScript string To the $oStream. $oStream.WriteText($s_SourceString) ; Store the data To the $oCDOMessage BodyPart $oStream.Flush ; Get an encoded $oStream $oStream = $oCDOMessage.BodyPart.GetEncodedContentStream ; read the encoded data As a string Return $oStream.ReadText ; You can use Read method To get a binary data. ; $oStream.Type = 1 ; Return $oStream.Read EndFunc ;==>QuotedPrintableEncode ; Next is a binary variant of the function, with bytearray (VT_UI1 VT_ARRAY) as input and output. ; You can simply modify these two functions for combination of binary and string input and output parameters. ; This Func is used on Quoted-printable encoder online sample page. ; VBScript QuotedPrintableEncode_Binary encoding ; 2005 Antonin Foller http://www.motobit.com Func _QuotedPrintable_Encode_Binary($dSourceBinary) ; Create CDO.$oCDOMessage object For the encoding. Local $oCDOMessage = ObjCreate("CDO.Message") ; Set the encoding $oCDOMessage.BodyPart.ContentTransferEncoding = "quoted-printable" ; Get the data $oStream To write source string data ; As ADODB.$oStream Local $oStream = $oCDOMessage.BodyPart.GetDecodedContentStream ; Set the type of the $oStream To adTypeBinary. $oStream.Type = 1 ; Write the VBScript string To the $oStream. $oStream.Write($dSourceBinary) ; Store the data To the $oCDOMessage BodyPart $oStream.Flush ; Get an encoded $oStream $oStream = $oCDOMessage.BodyPart.GetEncodedContentStream ; Set the type of the $oStream To adTypeBinary. $oStream.Type = 1 ; You can use Read method To get a binary data. Return $oStream.Read EndFunc ;==>QuotedPrintableEncode_Binary #EndRegion - _QuotedPrintable_Encode_Binary #Region - _QuotedPrintable_Decode_Binary ;~ https://www.motobit.com/tips/detpg_quoted-printable-decode/ ; This article contains a short Func for quoted printable decoding, using CDO.Message object. ; You can use this Func in ASP or .VBS files (wsh - windows scripting host files), or directly in VBA (visual basic 5, 6, Word, Excel, Access and Outlook scripting). ; VBScript QuotedPrintableDecode decoding Function ; 2005 Antonin Foller http://www.motobit.com Func _QuotedPrintable_Decode($s_SourceData, $s_CharSet) ; Create CDO.Message object For the encoding. Local $oCDO_Message = ObjCreate("CDO.Message") ; Set the encoding $oCDO_Message.BodyPart.ContentTransferEncoding = "quoted-printable" ; Get the data $oStream To write source string data ; As ADODB.$oStream Local $oStream = $oCDO_Message.BodyPart.GetEncodedContentStream If VarGetType($s_SourceData) = 'String' Then ; Set $s_CharSet To base windows $s_CharSet $oStream.CharSet = "windows-1250" ; Write the VBScript string To the $oStream. $oStream.WriteText($s_SourceData) Else ; Set the type of the $oStream To adTypeBinary. $oStream.Type = 1 ; Write the source binary data To the $oStream. $oStream.Write($s_SourceData) EndIf ; Store the data To the $oCDO_Message BodyPart $oStream.Flush ; Get an encoded $oStream $oStream = $oCDO_Message.BodyPart.GetDecodedContentStream ; Set the type of the $oStream To adTypeBinary. $oStream.CharSet = $s_CharSet ; You can use Read method To get a binary data. Return $oStream.ReadText EndFunc ;==>_QuotedPrintable_Decode ; Next is a binary variant of the function, with bytearray (VT_UI1 VT_ARRAY) as output. ; The _QuotedPrintable_Decode_Binary then converts the binary data to a Quoted-Printable output string. ; Output of this Func are binary decoded data (you can use it, for example, as a data parameter of Response. ; BinaryWrite method) You can simply modify these two functions for combination of binary and string input and output parameters. ; This Func is used on Quoted-printable decoder online sample page. ; VBScript _QuotedPrintable_Decode_Binary decoding Function ; 2005 Antonin Foller http://www.motobit.com Func _QuotedPrintable_Decode_Binary($s_SourceData) ; Create CDO.Message object For the encoding. Local $oCDO_Message = ObjCreate("CDO.Message") ; Set the encoding $oCDO_Message.BodyPart.ContentTransferEncoding = "quoted-printable" ; Get the data $oStream To write source string data ; As ADODB.$oStream Local $oStream = $oCDO_Message.BodyPart.GetEncodedContentStream If VarGetType($s_SourceData) = 'String' Then ; Write the VBScript string To the $oStream. $oStream.Write($s_SourceData) Else ; Set the type of the $oStream To adTypeBinary. $oStream.Type = 1 ; Write the source binary data To the $oStream. $oStream.Write($s_SourceData) EndIf ; Store the data To the $oCDO_Message BodyPart $oStream.Flush ; Get an encoded $oStream $oStream = $oCDO_Message.BodyPart.GetDecodedContentStream ; Set the type of the $oStream To adTypeBinary. $oStream.Type = 1 ; You can use Read method To get a binary data. Return $oStream.Read EndFunc ;==>_QuotedPrintable_Decode_Binary #EndRegion - _QuotedPrintable_Decode_Binary  
      REMARK: License note from: https://www.motobit.com/tips/detpg_quoted-printable-decode/ and https://www.motobit.com/tips/detpg_quoted-printable-encode/:
       
    • By mLipok
      This is modest beginning for UDF Chilkat component:
      https://www.chilkatsoft.com/downloads_ActiveX.asp
      Some of AcitveX object bundled into this component (dll file) are Free (you can verify it here), some other are commercial.
      You can downolad this UDF here:
      ; #INDEX# ======================================================================== ; Title .........: Chilkat.au3 ; AutoIt Version : 3.3.10.2++ ; Language ......: English ; Description ...: A collection of Function for use with Chilkat component ; Author ........: mLipok ; Modified ......: ; URL ...........: https://www.chilkatsoft.com/refdoc/activex.asp ; URL ...........: https://www.chilkatsoft.com/downloads_ActiveX.asp ; Date ..........: 2017/02/01 ; Version .......: 0.1.1 BETA - Work in progress ; ================================================================================ #cs 2017/02/01 . First official version - mLipok #ce http://www.chilkatforum.com/questions/1306/is-the-chilkat-upload-component-freeware
       
      Examples:
       
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7 ;~ #AutoIt3Wrapper_Run_Debug_Mode=Y #Tidy_Parameters=/sort_funcs /reel #include <Array.au3> #include <StringConstants.au3> #include "Chilkat.au3" _Example() Func _Example() _ErrorLog_ChilkatWrapper(ConsoleWrite) _Chilkat_StartUp(@ScriptDir & '\ChilkatAx-9.5.0-win32.dll') _Chilkat_DllVersion($CHILKATOBJ_VERSION_950) Local $oGLOBAL = _Chilkat_GLOBAL_ObjCreate() If @error Then MsgBox($MB_ICONERROR, 'GLOBAL Declartion', '@error = ' & @error & @CRLF & '@extended = ' & @extended) _Chilkat_GLOBAL_UnlockBundle($oGLOBAL, "Anything for 30-day trial") If @error Then MsgBox($MB_ICONERROR, 'UnlockBundle', '@error = ' & @error & @CRLF & '@extended = ' & @extended) ; Just comment / uncomment one of this followin Examples functions: ;~ _Example_12_JsonObject_PrettyPrint() ;~ _Example_13_JsonObject_IterateMembers() ;~ _Example_14_JsonObject_CreateDocument() ;~ _Example_15_CSV_ColumnNames() ;~ _Example_16_CSV_ToArray() _Example_17_CSV_ToArray('(?i).*?Pierwszy.*?Urz.*?Skarb.*?', '(?i).*Katowice.*?') EndFunc ;==>_Example Func _Example_12_JsonObject_PrettyPrint() _Log_ChilkatExample('_Example_12_JsonObject_PrettyPrint') ; https://www.example-code.com/vbscript/json_pretty_print.asp Local $oJSON = _Chilkat_JSON_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) Local $sJSON_String = "{""name"": ""donut"",""image"":{""fname"": ""donut.jpg"",""w"": 200,""h"": 200},""thumbnail"":{""fname"": ""donutThumb.jpg"",""w"": 32,""h"": 32}}" Local $iSuccess = $oJSON.Load($sJSON_String) If ($iSuccess <> 1) Then ConsoleWrite($oJSON.LastErrorText & @CRLF) Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) EndIf ; To pretty-print, set the EmitCompact property equal to 0 $oJSON.EmitCompact = 0 ; If bare-LF line endings are desired, turn off EmitCrLf ; Otherwise CRLF line endings are emitted. $oJSON.EmitCrLf = 0 ; Emit the formatted JSON: ConsoleWrite($oJSON.Emit() & @CRLF) EndFunc ;==>_Example_12_JsonObject_PrettyPrint Func _Example_13_JsonObject_IterateMembers() _Log_ChilkatExample('_Example_13_JsonObject_IterateMembers') ; https://www.example-code.com/vbscript/json_iterate_members.asp Local $oJSON = _Chilkat_JSON_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) Local $sJSON_String = "{ ""id"": 1, ""name"": ""A green door"", ""tags"": [""home"", ""green""], ""price"": 125 }" Local $iSuccess = $oJSON.Load($sJSON_String) If ($iSuccess <> 1) Then ConsoleWrite($oJSON.LastErrorText & @CRLF) Return SetError($CHILKAT_ERR_LOAD, @extended, $CHILKAT_RET_FAILURE) EndIf Local $sName = '', $sValue = '' Local $iNumMembers = $oJSON.Size, $iValue = 0 For $iMember_idx = 0 To $iNumMembers - 1 $sName = $oJSON.NameAt($iMember_idx) $sValue = $oJSON.StringAt($iMember_idx) ConsoleWrite($sName & ": " & $sValue & @CRLF) $iValue = $oJSON.IntAt($iMember_idx) ConsoleWrite($sName & " as integer: " & $iValue & @CRLF) Next EndFunc ;==>_Example_13_JsonObject_IterateMembers Func _Example_14_JsonObject_CreateDocument() _Log_ChilkatExample('_Example_14_JsonObject_CreateDocument') ; https://www.example-code.com/vbscript/create_json.asp Local $oJSON = _Chilkat_JSON_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) Local $iSuccess $iSuccess = $oJSON.AddStringAt(-1, "Title", "Pan's Labyrinth") ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF) $iSuccess = $oJSON.AddStringAt(-1, "Director", "Guillermo del Toro") ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF) $iSuccess = $oJSON.AddStringAt(-1, "Original_Title", "El laberinto del fauno") ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF) $iSuccess = $oJSON.AddIntAt(-1, "Year_Released", 2006) ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF) $oJSON.EmitCompact = 0 ConsoleWrite($oJSON.Emit() & @CRLF) EndFunc ;==>_Example_14_JsonObject_CreateDocument Func _Example_15_CSV_ColumnNames() _Log_ChilkatExample('_Example_15_CSV_ColumnNames') ; https://www.example-code.com/vbscript/csv_columnNames.asp Local $sURL = 'http://www.chilkatsoft.com/testData/sample.csv' InetGet($sURL, @ScriptDir & '\sample.csv') Local $oCSV = _Chilkat_CSV_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) ; Prior to loading the CSV file, indicate that the 1st row ; should be treated as column names: $oCSV.HasColumnNames = 1 ; Load the $oCSV records from the file: Local $iSuccess = $oCSV.LoadFile(@ScriptDir & "\sample.csv") If ($iSuccess <> 1) Then ConsoleWrite($oCSV.LastErrorText & @CRLF) Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE) EndIf Local $iIndex = 0 Local $sColName = '' ; Display the column names: For $iCol_idx = 0 To $oCSV.NumColumns - 1 $sColName = $oCSV.GetColumnName($iCol_idx) ConsoleWrite($iCol_idx & ": " & $sColName & @CRLF) ; The following line demonstrates to to get the column ; index given a column name: $iIndex = $oCSV.GetIndex($sColName) ConsoleWrite($sColName & " is at column index " & $iIndex & @CRLF) Next EndFunc ;==>_Example_15_CSV_ColumnNames Func _Example_16_CSV_ToArray() _Log_ChilkatExample('_Example_16_CSV_ToArray') Local $sURL = 'http://www.chilkatsoft.com/testData/sample.csv' InetGet($sURL, @ScriptDir & '\sample.csv') Local $oCSV = _Chilkat_CSV_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) ; Prior to loading the CSV file, indicate that the 1st row ; should be treated as column names: $oCSV.HasColumnNames = 1 ; Load the $oCSV records from the file: Local $iSuccess = $oCSV.LoadFile(@ScriptDir & "\sample.csv") If ($iSuccess <> 1) Then ConsoleWrite($oCSV.LastErrorText & @CRLF) Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE) EndIf Local $iNumColumns = $oCSV.NumColumns Local $iNumRows = $oCSV.NumRows Local $aResult[$iNumRows + 1][$iNumColumns] ; First get the column names For $iCol_idx = 0 To $iNumColumns - 1 $aResult[0][$iCol_idx] = $oCSV.GetColumnName($iCol_idx) Next For $iRow_idx = 0 To $iNumRows - 1 For $iCol_idx = 0 To $iNumColumns - 1 $aResult[$iRow_idx + 1][$iCol_idx] = $oCSV.GetCell($iRow_idx, $iCol_idx) Next Next _ArrayDisplay($aResult, '$aResult') EndFunc ;==>_Example_16_CSV_ToArray Func _Example_17_CSV_ToArray($sName_RegExpPattern, $sCity_RegExpPattern) _Log_ChilkatExample('_Example_16_CSV_ToArray') ; https://www.example-code.com/vbscript/csv_columnNames.asp Local $sURL = 'https://epuap.gov.pl/wps/wcm/connect/61e062b9-d981-4526-9f63-c2569263775a/RESP_2016-10-07.csv?MOD=AJPERES' InetGet($sURL, @ScriptDir & '\ePUAP.csv') ConsoleWrite("- Download completed" & @CRLF) Local $oCSV = _Chilkat_CSV_ObjCreate() If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE) ; Prior to loading the CSV file, indicate that the 1st row ; should be treated as column names: $oCSV.HasColumnNames = 1 ; Load the $oCSV records from the file: Local $sCSVContent = FileRead(@ScriptDir & "\ePUAP.csv") ConsoleWrite("- Load File completed" & @CRLF) Local $iSuccess = $oCSV.LoadFromString($sCSVContent) If ($iSuccess <> 1) Then ConsoleWrite($oCSV.LastErrorText & @CRLF) Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE) EndIf ConsoleWrite("- LoadFromString completed" & @CRLF) Local $iNumColumns = $oCSV.NumColumns Local $iNumRows = $oCSV.NumRows Local $aResult[$iNumRows + 1][$iNumColumns] ; First get the column names For $iCol_idx = 0 To $iNumColumns - 1 $aResult[0][$iCol_idx] = $oCSV.GetColumnName($iCol_idx) Next Local $iResult_RowCount = 1 ; First is ColumnName For $iRow_idx = 0 To $iNumRows - 1 If _ StringRegExp($oCSV.GetCell($iRow_idx, 0), $sName_RegExpPattern, $STR_REGEXPMATCH) _ And _ StringRegExp($oCSV.GetCell($iRow_idx, 4), $sCity_RegExpPattern, $STR_REGEXPMATCH) _ Then For $iCol_idx = 0 To $iNumColumns - 1 $aResult[$iResult_RowCount][$iCol_idx] = $oCSV.GetCell($iRow_idx, $iCol_idx) Next $iResult_RowCount += 1 EndIf Next ; strip array size to Number of founds rows ReDim $aResult[$iResult_RowCount][$iNumColumns] ConsoleWrite("- Parsing completed" & @CRLF) _ArrayDisplay($aResult, '$aResult') EndFunc ;==>_Example_17_CSV_ToArray Func _Log_ChilkatExample($sData) ConsoleWrite('>+ ' & $sData & @CRLF) EndFunc ;==>_Log_ChilkatExample  
      REMARK:
      This UDF is a continuation of this thread:
       
    • By mLipok
      Here I found a usefull UDF for POP3.
      I modified this UDF.
      You can download it from download section.


      Below you see old description:
       
    • By amosrinat
      Hi,
      i have an AutoIT script that sends emails with two embedded images.
      When users get the email they don't see the images. How should I fix my code?
      Thank you for your support,
      Amos
      Func fSendMail() $TemplateName = StringRegExpReplace($Template, "^.*\\|\..*$", "") $SmtpServer = "smtp.**.com" $FromName = "do-not-reply@*********" $FromAddress = "do-not-reply@******" $ToAddress = $MG1_Mgr & ";"& $Owner $Subject = "ACTION REQUIRED - " & $TemplateName $Body = $sBody5 $IPPort = 25 $ssl = 0 Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = fINetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $IPPort, $ssl) If @error Then MyErrFunc() EndIf EndFunc;fSendMail Func fINetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort $objEmail.Configuration.Fields.Update $objEmail.Fields.Update ;$objEmail.Send **************** If @error Then MyErrFunc() EndIf $objEmail = "" EndFunc;fINetSmtpMailCom  
    • By wysocki
      I have a smartphone and I use it to access my email. However, when composing an email on it I have a problem. My list of phone contacts on the phone is very different from my list of email contacts in my Thunderbird desktop app.  I use my Gmail address book to store primarily phone contacts, and I use Thunderbird for my list of email contacts. I wanted a way to get my Thunderbird contact list onto my smartphone to be able to compose emails to addresses in that list. Here's my solution.
      I wrote a script to export my Thunderbird Personal Address Book to a csv file. It then reads that file and re-writes it with html wrappers around the data to make it into a nicely formatted web page. It then uploads the htm file to my website. On my smartphone, I created a shortcut to the file's URL and whenever I click it, I get the list displayed. Each contact shows name and email address along with a COPY button that will put the address into the clipboard. Then in my email client, I can easily paste that address into it. Alternatively, clicking on the actual email link will open a new message dialog in your email client with that address already entered.
      To use the app, all you need to do is use Thunderbird and have a webserver available. You'll need to download the FTPEX.AU3 file from this website and make a few changes to some constants around line 17 for FTP login info, etc.
       
      pab2ftp.au3
×
×
  • Create New...