MBS FileMaker Plugin Example Databases

Batch Emailer

All examples are included with download of MBS FileMaker Plugin.

Batch Emailer.fmp12

Overview
Tables2
Relationships0
Layouts2
Scripts4
Value Lists0
Custom Functions0
Custom Menus0
File Options
Default custom menu set[Standard FileMaker Menus]
When opening file
Minimum allowed version12.0
Login usingAccount Name; Account= Admin
Allow user to save passwordOff
Require iOS passcodeOff
Switch to layoutOff
Hide all toolbarsOff
Script triggers
OnFirstWindowOpenOff
OnLastWindowCloseOff
OnWindowOpenOff
OnWindowCloseOff
OnFileAVPlayerChangeOff
Thumbnail Settings
Generate ThumbnailsOn; Temporary

 

Tables

Table Name
Statistics
Occurrences in Relationship Graph
Batch Emailer
13 fields defined, 1 record
Batch Emailer
Recipients
7 fields defined, 101 records
Recipients

Fields

Table Name: Batch Emailer - 13 Fields
Field NameTypeOptionsCommentsOn LayoutsIn RelationshipsIn ScriptsIn Value Lists
SMTP ServerNormal, TextAuto-Enter:
  • Allow editing
Validation:
  • Only during data entry
Storage:
  • Repetitions: 1
  • Indexing: None
  • Automatically create indexes as needed
  • Index Language: German
      SMTP UsernameNormal, TextAuto-Enter:
      • Allow editing
      Validation:
      • Only during data entry
      Storage:
      • Repetitions: 1
      • Indexing: None
      • Automatically create indexes as needed
      • Index Language: German
          SMTP PasswordNormal, TextAuto-Enter:
          • Allow editing
          Validation:
          • Only during data entry
          Storage:
          • Repetitions: 1
          • Indexing: None
          • Automatically create indexes as needed
          • Index Language: German
              From NameNormal, TextAuto-Enter:
              • Allow editing
              Validation:
              • Only during data entry
              Storage:
              • Repetitions: 1
              • Indexing: None
              • Automatically create indexes as needed
              • Index Language: German
                  From EmailNormal, TextAuto-Enter:
                  • Allow editing
                  Validation:
                  • Only during data entry
                  Storage:
                  • Repetitions: 1
                  • Indexing: None
                  • Automatically create indexes as needed
                  • Index Language: German
                      BCC NameNormal, TextAuto-Enter:
                      • Allow editing
                      Validation:
                      • Only during data entry
                      Storage:
                      • Repetitions: 1
                      • Indexing: None
                      • Automatically create indexes as needed
                      • Index Language: German
                          BCC EmailNormal, TextAuto-Enter:
                          • Allow editing
                          Validation:
                          • Only during data entry
                          Storage:
                          • Repetitions: 1
                          • Indexing: None
                          • Automatically create indexes as needed
                          • Index Language: German
                              SMTP PortNormal, TextAuto-Enter:
                              • Allow editing
                              Validation:
                              • Only during data entry
                              Storage:
                              • Repetitions: 1
                              • Indexing: None
                              • Automatically create indexes as needed
                              • Index Language: German
                                  SubjectNormal, TextAuto-Enter:
                                  • Allow editing
                                  Validation:
                                  • Only during data entry
                                  Storage:
                                  • Repetitions: 1
                                  • Indexing: None
                                  • Automatically create indexes as needed
                                  • Index Language: German
                                      Text ContentNormal, TextAuto-Enter:
                                      • Allow editing
                                      Validation:
                                      • Only during data entry
                                      Storage:
                                      • Repetitions: 1
                                      • Indexing: None
                                      • Automatically create indexes as needed
                                      • Index Language: German
                                          HTML ContentNormal, TextAuto-Enter:
                                          • Allow editing
                                          Validation:
                                          • Only during data entry
                                          Storage:
                                          • Repetitions: 1
                                          • Indexing: None
                                          • Automatically create indexes as needed
                                          • Index Language: German
                                              AttachmentNormal, BinaryAuto-Enter:
                                              • Allow editing
                                              Validation:
                                              • Only during data entry
                                              Storage:
                                              • Repetitions: 1
                                                  Inline GraphicsNormal, BinaryAuto-Enter:
                                                  • Allow editing
                                                  Validation:
                                                  • Only during data entry
                                                  Storage:
                                                  • Repetitions: 1

                                                      Table Name: Recipients - 7 Fields
                                                      Field NameTypeOptionsCommentsOn LayoutsIn RelationshipsIn ScriptsIn Value Lists
                                                      NameNormal, TextAuto-Enter:
                                                      • Allow editing
                                                      Validation:
                                                      • Only during data entry
                                                      Storage:
                                                      • Repetitions: 1
                                                      • Indexing: None
                                                      • Automatically create indexes as needed
                                                      • Index Language: German
                                                          EmailNormal, TextAuto-Enter:
                                                          • Allow editing
                                                          Validation:
                                                          • Only during data entry
                                                          Storage:
                                                          • Repetitions: 1
                                                          • Indexing: None
                                                          • Automatically create indexes as needed
                                                          • Index Language: German
                                                              StatusNormal, TextAuto-Enter:
                                                              • Allow editing
                                                              Validation:
                                                              • Only during data entry
                                                              Storage:
                                                              • Repetitions: 1
                                                              • Indexing: None
                                                              • Automatically create indexes as needed
                                                              • Index Language: German
                                                                  Sent TimeStampNormal, TimestampAuto-Enter:
                                                                  • Allow editing
                                                                  Validation:
                                                                  • Only during data entry
                                                                  Storage:
                                                                  • Repetitions: 1
                                                                  • Indexing: None
                                                                  • Automatically create indexes as needed
                                                                  • Index Language: German
                                                                      Send TimeStampNormal, TimestampAuto-Enter:
                                                                      • Allow editing
                                                                      Validation:
                                                                      • Only during data entry
                                                                      Storage:
                                                                      • Repetitions: 1
                                                                      • Indexing: None
                                                                      • Automatically create indexes as needed
                                                                      • Index Language: German
                                                                          ErrorLogNormal, TextAuto-Enter:
                                                                          • Allow editing
                                                                          Validation:
                                                                          • Only during data entry
                                                                          Storage:
                                                                          • Repetitions: 1
                                                                          • Indexing: None
                                                                          • Automatically create indexes as needed
                                                                          • Index Language: German
                                                                              IDNormal, NumberAuto-Enter:
                                                                              • Allow editing
                                                                              • Serial: Generate: On creation, Next value: 228, Increment: 1
                                                                              Validation:
                                                                              • Only during data entry
                                                                              Storage:
                                                                              • Repetitions: 1
                                                                              • Indexing: All
                                                                              • Index Language: German

                                                                                  Layout Objects: Batch Emailer

                                                                                  Regular Fields

                                                                                  Field Name: Batch Emailer::SMTP Server
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 57 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 78 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::SMTP Username
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 143 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 164 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::SMTP Password
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 166 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 187 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::From Name
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 228 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 249 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::From Email
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 251 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 272 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::BCC Name
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 313 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 334 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::BCC Email
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 336 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 357 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::SMTP Port
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 78 pt
                                                                                  • Left: 109 pt
                                                                                  • Bottom: 99 pt
                                                                                  • Right: 362 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::Subject
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 57 pt
                                                                                  • Left: 621 pt
                                                                                  • Bottom: 78 pt
                                                                                  • Right: 874 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::Text Content
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 80 pt
                                                                                  • Left: 621 pt
                                                                                  • Bottom: 240 pt
                                                                                  • Right: 1013 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::HTML Content
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 242 pt
                                                                                  • Left: 621 pt
                                                                                  • Bottom: 402 pt
                                                                                  • Right: 1013 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Batch Emailer::Attachment
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 439 pt
                                                                                  • Left: 496 pt
                                                                                  • Bottom: 564 pt
                                                                                  • Right: 749 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  No

                                                                                  Field Name: Batch Emailer::Inline Graphics
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 439 pt
                                                                                  • Left: 760 pt
                                                                                  • Bottom: 564 pt
                                                                                  • Right: 1013 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  No

                                                                                  Buttons

                                                                                  Button PropertiesCoordinatesScript/Script Step
                                                                                    Type:
                                                                                  • Text: Send Emails to All Recipients
                                                                                  • Top: 473 pt
                                                                                  • Left: 113 pt
                                                                                  • Bottom: 501 pt
                                                                                  • Right: 366 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Perform Script [ “Send seriel” ]

                                                                                  Scripts:


                                                                                  Button PropertiesCoordinatesScript/Script Step
                                                                                    Type:
                                                                                  • Text: Send one Email to me
                                                                                  • Top: 410 pt
                                                                                  • Left: 113 pt
                                                                                  • Bottom: 439 pt
                                                                                  • Right: 366 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Perform Script [ “Send seriel”; Parameter: "test" ]

                                                                                  Scripts:


                                                                                  Button PropertiesCoordinatesScript/Script Step
                                                                                    Type:
                                                                                  • Text: Send Emails to All Recipients Faster
                                                                                  • Top: 515 pt
                                                                                  • Left: 113 pt
                                                                                  • Bottom: 544 pt
                                                                                  • Right: 366 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Perform Script [ “Send parallel” ]

                                                                                  Scripts:


                                                                                  Layout Objects: Recipients

                                                                                  Regular Fields

                                                                                  Field Name: Recipients::Name
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 52 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 73 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::Email
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 75 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 96 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::Status
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 98 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 119 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::Sent TimeStamp
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 121 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 142 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::Send TimeStamp
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 144 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 165 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::ErrorLog
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 167 pt
                                                                                  • Left: 138 pt
                                                                                  • Bottom: 390 pt
                                                                                  • Right: 391 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Field Name: Recipients::ID
                                                                                  Field PropertiesCoordinatesField FormatField BehaviorQuick Find
                                                                                  • Top: 57 pt
                                                                                  • Left: 931 pt
                                                                                  • Bottom: 78 pt
                                                                                  • Right: 1010 pt
                                                                                  • Anchoring: Left, Top
                                                                                  Field Format:
                                                                                  • Edit Box
                                                                                  Field Behavior:
                                                                                  • Allow field to be entered: In Find mode, In Browse mode
                                                                                  • Touch keyboard type: Default for Data Type
                                                                                  • Go to next field using: Tab key
                                                                                  Yes

                                                                                  Script Hierarchy

                                                                                  Send seriel
                                                                                  Send parallel
                                                                                  HandleFinishedCURL
                                                                                  Create 100 addresses

                                                                                  Next Script: [Send parallel]
                                                                                  Script NameSend seriel
                                                                                  Run script with full access privilegesOff
                                                                                  Include In MenuYes
                                                                                  Layouts that use this script
                                                                                  Scripts that use this script
                                                                                    Script Definition
                                                                                    Script Steps
                                                                                    • #This script sends emails with 1 connection
                                                                                    • #Collect all parameters in variables
                                                                                    • Set Variable [ $StartTime; Value:Get(CurrentHostTimestamp) ]
                                                                                    • Set Variable [ $Testing; Value:Get(ScriptParameter) = "test" ]
                                                                                    • Go to Layout [ “Batch Emailer” (Batch Emailer) ]
                                                                                    • Set Variable [ $SMTPServer; Value:Batch Emailer::SMTP Server ]
                                                                                    • Set Variable [ $SMTPPort; Value:Batch Emailer::SMTP Port ]
                                                                                    • Set Variable [ $SMTPUser; Value:Batch Emailer::SMTP Username ]
                                                                                    • Set Variable [ $SMTPPass; Value:Batch Emailer::SMTP Password ]
                                                                                    • Set Variable [ $FromName; Value:Batch Emailer::From Name ]
                                                                                    • Set Variable [ $FromEmail; Value:Batch Emailer::From Email ]
                                                                                    • Set Variable [ $BCCName; Value:Batch Emailer::BCC Name ]
                                                                                    • Set Variable [ $BCCEmail; Value:Batch Emailer::BCC Email ]
                                                                                    • Set Variable [ $Subject; Value:Batch Emailer::Subject ]
                                                                                    • Set Variable [ $Text; Value:Batch Emailer::Text Content ]
                                                                                    • Set Variable [ $HTML; Value:Batch Emailer::HTML Content ]
                                                                                    • Set Variable [ $Attachment; Value:Batch Emailer::Attachment ]
                                                                                    • Set Variable [ $InlineGraphics; Value:Batch Emailer::Inline Graphics ]
                                                                                    • # Build Email
                                                                                    • Set Variable [ $EmailID; Value:MBS("SendMail.CreateEmail") ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.SetFrom"; $EmailID; $FromEmail; $FromName) ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.SetSubject"; $EmailID; $Subject) ]
                                                                                    • #Add Attachments
                                                                                    • // Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $Container; "test.jpg") ]
                                                                                    • // Set Variable [ $r; Value:MBS("SendMail.AddAttachmentFile"; $EmailID; $Path; "test.jpg") ]
                                                                                    • If [ not IsEmpty ( $Attachment ) ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $Attachment; MBS("Files.FileName"; GetAsText($Attachment))) ]
                                                                                    • End If
                                                                                    • If [ not IsEmpty ( $InlineGraphics ) ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $InlineGraphics; "image.jpg"; "image/jpeg"; "image.jpg") ]
                                                                                    • End If
                                                                                    • Go to Layout [ “Recipients” (Recipients) ]
                                                                                    • Go to Record/Request/Page [ First ]
                                                                                    • Set Variable [ $RecipientsCount; Value:If($Testing; 1; Get ( FoundCount )) ]
                                                                                    • #progress dialog
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.Reset") ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetTitle"; "Sending Email") ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetTopText"; "Sending " & $RecipientsCount & " emails...") ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetButtonCaption"; "Cancel") ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetProgress"; -1) ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.Show") ]
                                                                                    • #Loop
                                                                                    • Set Variable [ $count; Value:0 ]
                                                                                    • Set Variable [ $needNewCURL; Value:1 ]
                                                                                    • Loop
                                                                                    • #check progress
                                                                                    • Set Variable [ $count; Value:$count + 1 ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetProgress"; 100 * $count / $RecipientsCount) ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.SetBottomText"; $count & " of " & $RecipientsCount & ": " & Recipients::Name) ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.Update") ]
                                                                                    • #Update email text for this recipient
                                                                                    • If [ Length(Trim ( $Text )) > 0 ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.SetPlainText"; $EmailID; Substitute($Text; "$name$"; Recipients::Name)) ]
                                                                                    • End If
                                                                                    • If [ Length(Trim ( $HTML )) > 0 ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.SetHTMLText"; $EmailID; Substitute($HTML; "$name$"; MBS("Text.EncodeToHTML"; Recipients::Name))) ]
                                                                                    • End If
                                                                                    • # Add Recipients
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.ClearRecipients"; $EmailID) ]
                                                                                    • If [ Length(Trim ( $FromEmail )) > 0 ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.SetFrom"; $EmailID; $FromEmail; $FromName) ]
                                                                                    • End If
                                                                                    • If [ Length(Trim ( $BCCEmail )) > 0 ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.AddBCC"; $EmailID; $BCCEmail; $BCCName) ]
                                                                                    • End If
                                                                                    • If [ $Testing ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.AddTO"; $EmailID; $FromEmail; $FromName) ]
                                                                                    • Else
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.AddTO"; $EmailID; Recipients::Email; Recipients::Name) ]
                                                                                    • End If
                                                                                    • If [ $needNewCURL ]
                                                                                    • Set Variable [ $r; Value:If(IsEmpty($curl); 0; MBS("CURL.Cleanup"; $curl)) ]
                                                                                    • Set Variable [ $curl; Value:MBS("CURL.New") ]
                                                                                    • End If
                                                                                    • # Send Email
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.PrepareCURL"; $EmailID; $curl) ]
                                                                                    • If [ $needNewCURL ]
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionURL"; $curl; "smtp://" & $SMTPServer) ]
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionUsername"; $curl; $SMTPUser) ]
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionPassword"; $curl; $SMTPPass) ]
                                                                                    • #Maybe use alternative SMTP port?
                                                                                    • If [ Length(Trim ( $SMTPPort )) > 0 ]
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionPort"; $curl; $SMTPPort) ]
                                                                                    • End If
                                                                                    • #This turns TLS on and requires connection to be encrypted
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionUseSSL"; $curl; 3) ]
                                                                                    • #force TLS v1.2
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVersion"; $curl; 6) ]
                                                                                    • #This disables certificate verification, so we accept any:
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyHost"; $curl; 0) ]
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyPeer"; $curl; 0) ]
                                                                                    • #Better with certificates if you have some:
                                                                                    • // Set Variable [ $r; Value:MBS( "CURL.SetOptionCAInfo"; $curl; "/Library/FileMaker Server/certificates.pem") ]
                                                                                    • // Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyHost"; $curl; 2) ]
                                                                                    • // Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyPeer"; $curl; 1) ]
                                                                                    • End If
                                                                                    • #Require new connection every 50 emails
                                                                                    • Set Variable [ $r; Value:MBS("CURL.SetOptionFreshConnect"; $curl; $needNewCURL) ]
                                                                                    • Set Field [ Recipients::Status; "sending" ]
                                                                                    • Set Field [ Recipients::Send TimeStamp; Get ( CurrentTimestamp ) ]
                                                                                    • Commit Records/Requests [ No dialog ]
                                                                                    • #Run the transfer
                                                                                    • Set Variable [ $result; Value:MBS("CURL.Perform"; $curl) ]
                                                                                    • #get debug messages
                                                                                    • Set Field [ Recipients::ErrorLog; MBS("CURL.GetDebugAsText"; $curl) ]
                                                                                    • If [ $result = "OK" ]
                                                                                    • Set Field [ Recipients::Status; "Sent" ]
                                                                                    • Set Field [ Recipients::Sent TimeStamp; Get(CurrentTimestamp) ]
                                                                                    • Else
                                                                                    • Set Field [ Recipients::Status; "Failed" ]
                                                                                    • Set Field [ Recipients::Sent TimeStamp; "" ]
                                                                                    • End If
                                                                                    • Commit Records/Requests [ Skip data entry validation; No dialog ]
                                                                                    • # Next email
                                                                                    • Exit Loop If [ $Testing ]
                                                                                    • Exit Loop If [ MBS("ProgressDialog.GetCancel") ]
                                                                                    • Go to Record/Request/Page [ Next; Exit after last ]
                                                                                    • Pause/Resume Script [ Duration (seconds): ,1 ]
                                                                                    • Set Variable [ $needNewCURL; Value:($count mod 50) = 0 ]
                                                                                    • End Loop
                                                                                    • # Cleanup
                                                                                    • Set Variable [ $r; Value:MBS("CURL.Cleanup"; $curl) ]
                                                                                    • Set Variable [ $r; Value:MBS("ProgressDialog.Hide") ]
                                                                                    • Set Variable [ $r; Value:MBS("SendMail.Release"; $EmailID) ]
                                                                                    • Go to Layout [ original layout ]
                                                                                    • Set Variable [ $EndTime; Value:Get(CurrentHostTimestamp) ]
                                                                                    • Show Custom Dialog [ Title: "Sent."; Message: "Duration: " & ($EndTime-$StartTime); Default Button: “OK”, Commit: “Yes”; Button 2: “Abbrechen”, Commit: “No” ]
                                                                                    Fields used in this script
                                                                                    Scripts used in this script
                                                                                      Layouts used in this script
                                                                                      Tables used in this script
                                                                                      Table occurrences used by this script
                                                                                      Custom Functions used by this script
                                                                                        Custom menu set used by this script

                                                                                          Previous Script: [Send seriel]Next Script: [HandleFinishedCURL]
                                                                                          Script NameSend parallel
                                                                                          Run script with full access privilegesOff
                                                                                          Include In MenuYes
                                                                                          Layouts that use this script
                                                                                          Scripts that use this script
                                                                                            Script Definition
                                                                                            Script Steps
                                                                                            • #This script sends emails with 8 parallel connections
                                                                                            • #Collect all parameters in variables
                                                                                            • Set Variable [ $StartTime; Value:Get(CurrentHostTimestamp) ]
                                                                                            • Set Variable [ $Testing; Value:Get(ScriptParameter) = "test" ]
                                                                                            • Go to Layout [ “Batch Emailer” (Batch Emailer) ]
                                                                                            • Set Variable [ $SMTPServer; Value:Batch Emailer::SMTP Server ]
                                                                                            • Set Variable [ $SMTPPort; Value:Batch Emailer::SMTP Port ]
                                                                                            • Set Variable [ $SMTPUser; Value:Batch Emailer::SMTP Username ]
                                                                                            • Set Variable [ $SMTPPass; Value:Batch Emailer::SMTP Password ]
                                                                                            • Set Variable [ $FromName; Value:Batch Emailer::From Name ]
                                                                                            • Set Variable [ $FromEmail; Value:Batch Emailer::From Email ]
                                                                                            • Set Variable [ $BCCName; Value:Batch Emailer::BCC Name ]
                                                                                            • Set Variable [ $BCCEmail; Value:Batch Emailer::BCC Email ]
                                                                                            • Set Variable [ $Subject; Value:Batch Emailer::Subject ]
                                                                                            • Set Variable [ $Text; Value:Batch Emailer::Text Content ]
                                                                                            • Set Variable [ $HTML; Value:Batch Emailer::HTML Content ]
                                                                                            • Set Variable [ $Attachment; Value:Batch Emailer::Attachment ]
                                                                                            • Set Variable [ $InlineGraphics; Value:Batch Emailer::Inline Graphics ]
                                                                                            • # Build Email
                                                                                            • Set Variable [ $EmailID; Value:MBS("SendMail.CreateEmail") ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.SetFrom"; $EmailID; $FromEmail; $FromName) ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.SetSubject"; $EmailID; $Subject) ]
                                                                                            • #Add Attachments
                                                                                            • // Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $Container; "test.jpg") ]
                                                                                            • // Set Variable [ $r; Value:MBS("SendMail.AddAttachmentFile"; $EmailID; $Path; "test.jpg") ]
                                                                                            • If [ not IsEmpty ( $Attachment ) ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $Attachment; MBS("Files.FileName"; GetAsText($Attachment))) ]
                                                                                            • End If
                                                                                            • If [ not IsEmpty ( $InlineGraphics ) ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.AddAttachmentContainer"; $EmailID; $InlineGraphics; "image.jpg"; "image/jpeg"; "image.jpg") ]
                                                                                            • End If
                                                                                            • Go to Layout [ “Recipients” (Recipients) ]
                                                                                            • Go to Record/Request/Page [ First ]
                                                                                            • Set Variable [ $RecipientsCount; Value:If($Testing; 1; Get ( FoundCount )) ]
                                                                                            • #progress dialog
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.Reset") ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetTitle"; "Sending Email") ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetTopText"; "Sending " & $RecipientsCount & " emails...") ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetButtonCaption"; "Cancel") ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetProgress"; -1) ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.Show") ]
                                                                                            • #Loop
                                                                                            • Set Variable [ $count; Value:0 ]
                                                                                            • Set Variable [ $curls; Value:"" ]
                                                                                            • Set Variable [ $needNewCURL; Value:1 ]
                                                                                            • Loop
                                                                                            • #check progress
                                                                                            • Set Variable [ $count; Value:$count + 1 ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetProgress"; 100 * $count / $RecipientsCount) ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.SetBottomText"; $count & " of " & $RecipientsCount & ": " & Recipients::Name) ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.Update") ]
                                                                                            • #Update email text for this recipient
                                                                                            • If [ Length(Trim ( $Text )) > 0 ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.SetPlainText"; $EmailID; Substitute($Text; "$name$"; Recipients::Name)) ]
                                                                                            • End If
                                                                                            • If [ Length(Trim ( $HTML )) > 0 ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.SetHTMLText"; $EmailID; Substitute($HTML; "$name$"; MBS("Text.EncodeToHTML"; Recipients::Name))) ]
                                                                                            • End If
                                                                                            • # Add Recipients
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.ClearRecipients"; $EmailID) ]
                                                                                            • If [ Length(Trim ( $FromEmail )) > 0 ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.SetFrom"; $EmailID; $FromEmail; $FromName) ]
                                                                                            • End If
                                                                                            • If [ Length(Trim ( $BCCEmail )) > 0 ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.AddBCC"; $EmailID; $BCCEmail; $BCCName) ]
                                                                                            • End If
                                                                                            • If [ $Testing ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.AddTO"; $EmailID; $FromEmail; $FromName) ]
                                                                                            • Else
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.AddTO"; $EmailID; Recipients::Email; Recipients::Name) ]
                                                                                            • End If
                                                                                            • #Find a non busy curl connection
                                                                                            • Set Variable [ $index; Value:1 ]
                                                                                            • Loop
                                                                                            • If [ $curls[$index] = "" ]
                                                                                            • #found free index, setup new CURL session
                                                                                            • Set Variable [ $curl; Value:MBS("CURL.New") ]
                                                                                            • Set Variable [ $curls[$index]; Value:$curl ]
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionURL"; $curl; "smtp://" & $SMTPServer) ]
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionUsername"; $curl; $SMTPUser) ]
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionPassword"; $curl; $SMTPPass) ]
                                                                                            • #Maybe use alternative SMTP port?
                                                                                            • If [ Length(Trim ( $SMTPPort )) > 0 ]
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionPort"; $curl; $SMTPPort) ]
                                                                                            • End If
                                                                                            • #This turns TLS on and requires connection to be encrypted
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionUseSSL"; $curl; 3) ]
                                                                                            • #force TLS v1.2
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVersion"; $curl; 6) ]
                                                                                            • #This disables certificate verification, so we accept any:
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyHost"; $curl; 0) ]
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyPeer"; $curl; 0) ]
                                                                                            • #Better with certificates if you have some:
                                                                                            • // Set Variable [ $r; Value:MBS( "CURL.SetOptionCAInfo"; $curl; "/Library/FileMaker Server/certificates.pem") ]
                                                                                            • // Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyHost"; $curl; 2) ]
                                                                                            • // Set Variable [ $r; Value:MBS("CURL.SetOptionSSLVerifyPeer"; $curl; 1) ]
                                                                                            • Exit Loop If [ 1 ]
                                                                                            • Else
                                                                                            • #found used index
                                                                                            • If [ MBS( "CURL.IsRunning"; $curls[$index] ) = 0 ]
                                                                                            • #found used index which is done
                                                                                            • Perform Script [ “HandleFinishedCURL”; Parameter: $curls[$index] ]
                                                                                            • Set Variable [ $curl; Value:$curls[$index] ]
                                                                                            • Exit Loop If [ 1 ]
                                                                                            • End If
                                                                                            • End If
                                                                                            • Set Variable [ $index; Value:$index + 1 ]
                                                                                            • If [ $index = 9 ]
                                                                                            • #Wait
                                                                                            • Set Variable [ $index; Value:1 ]
                                                                                            • Pause/Resume Script [ Duration (seconds): ,01 ]
                                                                                            • End If
                                                                                            • End Loop
                                                                                            • # Send Email
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.PrepareCURL"; $EmailID; $curl) ]
                                                                                            • #Require new connection every 50 emails
                                                                                            • Set Variable [ $r; Value:MBS("CURL.SetOptionFreshConnect"; $curl; $count mod 50 * 8 = 0) // new connection every around 50 emails ]
                                                                                            • Set Field [ Recipients::Status; "sending" ]
                                                                                            • Set Field [ Recipients::Send TimeStamp; Get ( CurrentTimestamp ) ]
                                                                                            • Commit Records/Requests [ No dialog ]
                                                                                            • #Run the transfer
                                                                                            • Set Variable [ $result; Value:MBS("CURL.SetTag"; $curl; Recipients::ID) ]
                                                                                            • Set Variable [ $result; Value:MBS("CURL.PerformInBackground"; $curl) ]
                                                                                            • #store status
                                                                                            • Set Field [ Recipients::ErrorLog; "" ]
                                                                                            • Set Field [ Recipients::Status; "Sending" ]
                                                                                            • Set Field [ Recipients::Sent TimeStamp; Get(CurrentTimestamp) ]
                                                                                            • Commit Records/Requests [ Skip data entry validation; No dialog ]
                                                                                            • # Next email
                                                                                            • Exit Loop If [ $Testing ]
                                                                                            • Exit Loop If [ MBS("ProgressDialog.GetCancel") ]
                                                                                            • Go to Record/Request/Page [ Next; Exit after last ]
                                                                                            • Pause/Resume Script [ Duration (seconds): ,01 ]
                                                                                            • End Loop
                                                                                            • #Wait for all to close
                                                                                            • Set Variable [ $index; Value:1 ]
                                                                                            • Loop
                                                                                            • If [ $curls[$index] = "" ]
                                                                                            • #found free index, no used
                                                                                            • Else
                                                                                            • #found used index, wait for finished
                                                                                            • Loop
                                                                                            • Exit Loop If [ MBS( "CURL.IsRunning"; $curls[$index] ) = 0 ]
                                                                                            • Pause/Resume Script [ Duration (seconds): ,1 ]
                                                                                            • End Loop
                                                                                            • #handle result
                                                                                            • Perform Script [ “HandleFinishedCURL”; Parameter: $curls[$index] ]
                                                                                            • End If
                                                                                            • Set Variable [ $index; Value:$index + 1 ]
                                                                                            • Exit Loop If [ $index = 9 ]
                                                                                            • End Loop
                                                                                            • # Cleanup
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[1]); 0; MBS("CURL.Cleanup"; $curls[1])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[2]); 0; MBS("CURL.Cleanup"; $curls[2])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[3]); 0; MBS("CURL.Cleanup"; $curls[3])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[4]); 0; MBS("CURL.Cleanup"; $curls[4])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[5]); 0; MBS("CURL.Cleanup"; $curls[5])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[6]); 0; MBS("CURL.Cleanup"; $curls[6])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[7]); 0; MBS("CURL.Cleanup"; $curls[7])) ]
                                                                                            • Set Variable [ $r; Value:If(IsEmpty($curls[8]); 0; MBS("CURL.Cleanup"; $curls[8])) ]
                                                                                            • Set Variable [ $r; Value:MBS("ProgressDialog.Hide") ]
                                                                                            • Set Variable [ $r; Value:MBS("SendMail.Release"; $EmailID) ]
                                                                                            • Go to Layout [ original layout ]
                                                                                            • Set Variable [ $EndTime; Value:Get(CurrentHostTimestamp) ]
                                                                                            • Show Custom Dialog [ Title: "Sent."; Message: "Duration: " & ($EndTime-$StartTime); Default Button: “OK”, Commit: “Yes”; Button 2: “Abbrechen”, Commit: “No” ]
                                                                                            Fields used in this script
                                                                                            Scripts used in this script
                                                                                            Layouts used in this script
                                                                                            Tables used in this script
                                                                                            Table occurrences used by this script
                                                                                            Custom Functions used by this script
                                                                                              Custom menu set used by this script

                                                                                                Previous Script: [Send parallel]Next Script: [Create 100 addresses]
                                                                                                Script NameHandleFinishedCURL
                                                                                                Run script with full access privilegesOff
                                                                                                Include In MenuYes
                                                                                                Layouts that use this script
                                                                                                  Scripts that use this script
                                                                                                  Script Definition
                                                                                                  Script Steps
                                                                                                  • Set Variable [ $curl; Value:Get(ScriptParameter) ]
                                                                                                  • Set Variable [ $RecipientID; Value:MBS("CURL.GetTag"; $curl) ]
                                                                                                  • #get debug messages
                                                                                                  • Set Variable [ $DebugMessages; Value:MBS("CURL.GetDebugAsText"; $curl) ]
                                                                                                  • Set Variable [ $Status; Value:MBS( "CURL.ErrorCode"; $curl ) ]
                                                                                                  • If [ $Status = 0 ]
                                                                                                  • Set Variable [ $Status; Value:"Sent" ]
                                                                                                  • Else
                                                                                                  • Set Variable [ $Status; Value:"Failed" ]
                                                                                                  • End If
                                                                                                  • Set Variable [ $r; Value:MBS( "FM.ExecuteFileSQL"; Get(FileName); "UPDATE Recipients SET \"ErrorLog\"=?, \"Status\"=?, \"Send TimeStamp\"=? WHERE \"ID\"=?"; 9; 13; $DebugMessages; $Status; Get(CurrentHostTimestamp); $RecipientID ) ]
                                                                                                  Fields used in this script
                                                                                                    Scripts used in this script
                                                                                                      Layouts used in this script
                                                                                                        Tables used in this script
                                                                                                          Table occurrences used by this script
                                                                                                            Custom Functions used by this script
                                                                                                              Custom menu set used by this script

                                                                                                                Previous Script: [HandleFinishedCURL]
                                                                                                                Script NameCreate 100 addresses
                                                                                                                Run script with full access privilegesOff
                                                                                                                Include In MenuYes
                                                                                                                Layouts that use this script
                                                                                                                  Scripts that use this script
                                                                                                                    Script Definition
                                                                                                                    Script Steps
                                                                                                                    • Set Variable [ $i; Value:0 ]
                                                                                                                    • Loop
                                                                                                                    • New Record/Request
                                                                                                                    • Set Field [ Recipients::Email; "test" & $i & "@yourdomain.test" ]
                                                                                                                    • Set Field [ Recipients::Name; "test" & $i ]
                                                                                                                    • Commit Records/Requests [ No dialog ]
                                                                                                                    • #next
                                                                                                                    • Set Variable [ $i; Value:$i + 1 ]
                                                                                                                    • Exit Loop If [ $i = 100 ]
                                                                                                                    • End Loop
                                                                                                                    Fields used in this script
                                                                                                                    Scripts used in this script
                                                                                                                      Layouts used in this script
                                                                                                                        Tables used in this script
                                                                                                                        Table occurrences used by this script
                                                                                                                        Custom Functions used by this script
                                                                                                                          Custom menu set used by this script

                                                                                                                            Download example: Batch Emailer

                                                                                                                            Used functions:




                                                                                                                            Links
                                                                                                                            MBS Xojo PDF Plugins