Deprecated on Catalina and later — recent macOS versions have made scripting Mail (and Applescript generally) extremely unreliable, so MoneyWorks has transitioned to using the macOS Sharing APIs. This information may still apply if you are using other scriptable mail apps or earlier OS versions. Also note that New Outlook mode of Microsoft Outlook does not appear to support any scripting or automation at the time of writing. Don't use it.
MoneyWorks supports sending mail on Mac via Apple Mail or Microsoft Outlook automatically (or direct via an SMTP server). But you may want to customise the way mail is sent.
In MoneyWorks 7.1.6 there is an additional (simpler) way to provide custom glue for interfacing with the system mail client on Mac. If there exists a unix executable in the standard plugins Scripts folder named mail_client_helper, then that executable will be used to send emails. It will be passed 4 parameters: the path to a file to be attached, a recipient (or comma-delimited list of recipients), a subject, and a message (currently blank).
Here is an example implementation of mail_client_helper that sends to Apple Mail (and works around the longstanding Mail bug wherein the signature is deleted when an attachment is added).
#!/usr/bin/osascript -- usage: mail_client_helper "attachmentpath" "recip1,recip2" "subject" "message" on run argv set attachment_path to item 1 of argv set reciplist to item 2 of argv set subjectvar to item 3 of argv tell application "Mail" set messagevar to (item 4 of argv) & return & return try set selsig to the name of the first signature -- 'the selected signature' does not work reliably: it can return an unusable UUID if the selected signature is not "None" then set messagevar to messagevar & (get the content of signature selsig) & return end if end try set AppleScript's text item delimiters to "," set delimitedList to every text item of reciplist set AppleScript's text item delimiters to "" set fileAttachThis to POSIX file attachment_path as alias set composeMessage to make new outgoing message with properties {visible:true, subject:subjectvar, content:messagevar} tell composeMessage repeat with thisr in delimitedList set this_addr to (do shell script "echo '" & thisr & "' | sed 's/.*< *//;s/ *>.*//;s/ //g'") make new to recipient at beginning of to recipients with properties {address:this_addr} end repeat make new attachment with properties {file name:fileAttachThis} at after the last paragraph end tell activate end tell end run
Update: Here is (sort of) improvement that retains the formatting of styled signatures* using set message signature. The trick is that adding an attachment erases the signature, and adding a signature after adding the attachment also generally fails. However, it seems to work if you give the attachment adding process some time to complete before asking for the signature to be added...
*Further update. As of Sierra and High Sierra, bugs in Apple Mail prevent this from working. There is no known fix until Apple fixes the bugs.
#!/usr/bin/osascript -- usage: mail_client_helper "attachmentpath" "recip1,recip2" "subject" "message" on run argv set attachment_path to item 1 of argv set reciplist to item 2 of argv set subjectvar to item 3 of argv tell application "Mail" set messagevar to (item 4 of argv) & return & return set AppleScript's text item delimiters to "," set delimitedList to every text item of reciplist set AppleScript's text item delimiters to "" set composeMessage to make new outgoing message with properties {visible:true, subject:subjectvar, content:messagevar} tell composeMessage repeat with thisr in delimitedList set this_addr to (do shell script "echo '" & thisr & "' | sed 's/.*< *//;s/ *>.*//;s/ //g'") make new to recipient at beginning of to recipients with properties {address:this_addr} end repeat if attachment_path is not "" set fileAttachThis to POSIX file attachment_path as alias make new attachment with properties {file name:fileAttachThis} at after the last paragraph end if end tell activate try set selsig to the name of the first signature -- 'the selected signature' does not work reliably: it can return an unusable UUID delay 2 -- wait a bit for the attachment to finish 'attaching' set message signature of composeMessage to signature selsig end try end tell end run
How to use:
- Put the script into a plain text file at ~/Library/Application Support/Cognito/MoneyWorks Gold/MoneyWorks 7 Standard Plug-Ins/Scripts/mail_client_helper
- Make it executable:
In Terminal, type
chmod a+x ~/Library/Application\ Support/Cognito/MoneyWorks\ Gold/MoneyWorks\ 7\ Standard\ Plug-Ins/Scripts/mail_client_helper