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
(AutoIt) Using Replace Patterns in EmailSee more Email Object ExamplesDemonstrates how to use the replace patterns (mail-merge) feature in Chilkat MailMan.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. Local $bSuccess ; --------------------------------------------------------------------- ; Create an email template for sending. $oEmailTemplate = ObjCreate("Chilkat.Email") ; We're going to replace "FIRST_NAME" with an actual name. ; We arbitrarily chose "FIRST_NAME". We can choose anything, such as "CUSTOMER_NAME" or "THE_RECIPIENT_NAME"... $oEmailTemplate.Subject = "Hello FIRST_NAME," $oEmailTemplate.From = "john@example.com" $oEmailTemplate.AddTo("FIRST_NAME","RECIPIENT_EMAIL") $oEmailTemplate.SetHtmlBody "<html><body><h2>Hello FIRST_NAME,</h2><p>Your order for PRODUCT_NAME has been shipped.</p></body></html>" ; If the email is saved to a file, we can see what it contains: $oEmailTemplate.SaveEml("qa_output/emailTemplate.eml") ; For example: ; MIME-Version: 1.0 ; Date: Tue, 26 Apr 2022 07:10:52 -0500 ; Message-ID: <715CF231A9F07B0B9FDB073518CD94138D791866@XYZ> ; Content-Type: text/html; charset=us-ascii ; Content-Transfer-Encoding: 7bit ; X-Priority: 3 (Normal) ; Subject: Hello FIRST_NAME, ; From: john@example.com ; CKX-Bounce-Address: john@example.com ; To: FIRST_NAME <RECIPIENT_EMAIL> ; ; <html><body><h2>Hello FIRST_NAME,</h2><p>Your order for PRODUCT_NAME has been shipped.</p></body></html> ; Note: Ignore the CKX-Bounce-Address header. It is automatically removed by Chilkat prior to sending. ; All "CKX-" headers are automatically removed prior to sending. ; --------------------------------------------------------------------- ; Demonstrate replace patterns by setting and then rendering to MIME. $oMailman = ObjCreate("Chilkat.MailMan") $oEmailTemplate.SetReplacePattern("FIRST_NAME","Elon") $oEmailTemplate.SetReplacePattern("RECIPIENT_EMAIL","elon.musk@example.com") $oEmailTemplate.SetReplacePattern("PRODUCT_NAME","Twitter Corporation") ; Render to MIME to see what we get. ; Note: When the MailMan sends an email, it renders the email to MIME and then sends. ; The rendering process is to do replacements, or possibly sign, encrypt, etc. ; When MailMan.SendEmail is called, internally the email is rendered, and the rendered email is sent. ; The equivalent to MailMan.Send email is to call email.RenderToMime followed by MailMan.SendMime. Local $sMime = $oMailman.RenderToMime($oEmailTemplate) ConsoleWrite($sMime & @CRLF) ; This is the rendered MIME: ; MIME-Version: 1.0 ; Date: Tue, 26 Apr 2022 07:25:49 -0500 ; Message-ID: <750582BCDC891C67B48CEE2293C08B902C3891E9@XYZ> ; Content-Type: text/html; charset=us-ascii ; Content-Transfer-Encoding: 7bit ; X-Priority: 3 (Normal) ; Subject: Hello Elon, ; From: john@example.com ; To: Elon <elon.musk@example.com> ; ; <html><body><h2>Hello Elon,</h2><p>Your order for Twitter Corporation has been shipped.</p></body></html> ; Note: When rendering, the Date and Message-ID headers are automatically regenerated. ; --------------------------------------------------------------------- ; An application can see what replacement patterns it previously set by calling SetReplacePattern multiple times. Local $iCount = $oEmailTemplate.NumReplacePatterns ConsoleWrite("Number of replace patterns: " & $iCount & @CRLF) Local $i = 0 While $i < $iCount ; Note: The GetReplaceString method was found to not be working correctly. It was returning the same value as GetReplacePattern. ; It is fixed in Chilkat v9.5.0.91 ConsoleWrite($oEmailTemplate.GetReplacePattern($i) & ": " & $oEmailTemplate.GetReplaceString($i) & @CRLF) $i = $i + 1 Wend ; Or lookup a replacement pattern by name: Local $sName = "FIRST_NAME" ConsoleWrite($sName & " = " & $oEmailTemplate.GetReplaceString2($sName) & @CRLF) ; Sample output: ; Number of replace patterns: 3 ; FIRST_NAME: Elon ; RECIPIENT_EMAIL: elon.musk@example.com ; PRODUCT_NAME: Twitter Corporation ; FIRST_NAME = Elon ; --------------------------------------------------------------------- ; Finally... demonstrate sending emails using the replacement patterns. ; ; Set our mail server settings.. $oMailman.SmtpHost = "smtp.mail.us-west-2.awsapps.com" $oMailman.SmtpSsl = True $oMailman.SmtpPort = 465 $oMailman.SmtpUsername = "john@example.com" $oMailman.SmtpPassword = "the_password" ; Imagine we have data in JSON format, and we wish to send the templated email to each recipient... ; ; { ; "mail_merge" : [ ; { ; "to": "mary@example.com", ; "name": "Mary", ; "product": "Widget 1" ; }, ; { ; "to": "robert@example.com", ; "name": "Robert", ; "product": "Widget 2" ; } ; ... ; ] ; } $oJson = ObjCreate("Chilkat.JsonObject") $bSuccess = $oJson.LoadFile("qa_data/json/mail_merge.json") If ($bSuccess = False) Then ConsoleWrite($oJson.LastErrorText & @CRLF) Exit EndIf Local $sEmailAddr Local $sFirstName Local $sProduct $i = 0 $iCount = $oJson.SizeOfArray("mail_merge") While $i < $iCount $oJson.I = $i $sEmailAddr = $oJson.StringOf("mail_merge[i].to") $sFirstName = $oJson.StringOf("mail_merge[i].name") $sProduct = $oJson.StringOf("mail_merge[i].product") $oEmailTemplate.SetReplacePattern("FIRST_NAME",$sFirstName) $oEmailTemplate.SetReplacePattern("RECIPIENT_EMAIL",$sEmailAddr) $oEmailTemplate.SetReplacePattern("PRODUCT_NAME",$sProduct) $bSuccess = $oMailman.SendEmail($oEmailTemplate) If ($bSuccess = False) Then ConsoleWrite($oMailman.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("Send email to " & $sEmailAddr & @CRLF) $i = $i + 1 Wend ConsoleWrite("Success." & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.