Hi all. 

I began working on a method to send emails with attachments a while back. I 
finally got back around to it. It simply opens an email in the Mail app. You 
have to actually send it (which I rather prefer actually.) 

I put the actual Applescript code in a property of my mainstack (which 
homestack() returns, you can replace that with whatever you want to contain 
your AppleScript.) 

There are place holders in the Applescript for things like theSubject, theBody 
etc. These get replaced with the arguments passd. 

I confess there is no error checking, either in the LivecodeScript or 
AppleScript. Feed it a bad email or a bad file path and you deserve what you 
get. ;-)

I developed this because I never was able to get the native Livecode functions 
to send an email with attachments. I think there is a library now that can do 
this, but I haven’t played around with that yet. 



ON sendMailWithApplescript theRecipient, theAddress, theSubject, theBody, 
theFileList
   put the sendMailTemplate of homeStack() into theCommand  
   put revMacFromUnixPath(theFilePath) into theMacFilePath
   
   replace "theSubject" with theSubject in theCommand
   replace "theBody" with theBody in theCommand
   replace "theRecipient" with theRecipient in theCommand
   replace "theAddress" with "bobsnei...@iotecdigital.com" in theCommand
   
   if theFileList is not empty then
      -- build the attachments code
      repeat for each line tFilePath in theFileList
         put revUnixFromMacPath(tFilePath) into tUnixFilePath
         
         -- check for bug in revUnixFromMacPath when using network shares
         if tUnixFilePath begins with "/Volumes/:" then \
               replace "/Volumes/:" with empty in tUnixFilePath
         
         put "make new attachment with properties {file name:" & quote & \
               tUnixFilePath & quote & "as alias}" & cr after tAttachments
      end repeat
      
      put "tell content of newMessage" & cr & tAttachments & cr & "end tell" & 
cr \
            into tAttachments
      replace "-- attachments" with tAttachments in theCommand
   end if
   
   do theCommand as appleScript
END sendMailWithApplescript

The property stored in the main stack called sendMailTemplate containing the 
AppleScript code:

property lastWindowID : missing value

tell application "Mail"
   set windowIDs to id of windows
   if windowIDs does not contain lastWindowID then
      set newMessage to make new outgoing message with properties 
{subject:"theSubject", content:"theBody" & return & return}

      tell newMessage
         set visible to true
         make new to recipient at end of to recipients with properties 
{name:"theRecipient", address:"theAddress"}
      end tell

      -- attachments

      activate
      set lastWindowID to id of window 1
   else
      tell window id lastWindowID
         set visible to false
         set visible to true
      end tell
      activate
   end if
end tell

Bob S

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to