sending email and file with mail client

Terry Judd terry.judd at unimelb.edu.au
Mon Feb 18 17:38:19 EST 2019


Hi Hershel - If it's a desktop app then you can control the user's email app using either applescript (MacOS) or VBscript (Windows). I've included some template scripts below to get you started (assuming your users have either Mail or Outlook). I store these in custom properties, use merge to replace the quoted variables and the do as applescript or vbscript depending on what platform you are targeting.

Couple of gotchas to do with line breaks in 'theBody' text...
Pretty sure that Apple Mail doesn't know what to do with html (at least not using the script below)
Outlook expects html formatted text so if you're passing plain text you'll need to replace CR with '<br>'
If you are using VBscript then you need to do something like...

put quote before theBody
replace CR with (quote&" & VbCrLf & _" & return & quote) in theBody
put quote after theBody

Hope that helps,

Terry...


Mail app (MacOS):

tell application "Mail"
	activate
	set messageSubject to "[[theSubject]]"
	set messageBody to "[[theBody]]"
	set recipientName to "[[theRecipientName]]"
	set recipientAddress to "[[theRecipientAddress]]"
	set attachmentPath to "[[theFileName]]"
	set theMessage to make new outgoing message with properties {visible:true, subject:messageSubject, content:messageBody}
	tell theMessage
		make new to recipient with properties {name:recipientName, address:recipientAddress}
		make new attachment at the end of theMessage with properties {file name:attachmentPath}
	end tell
	delay 1
	send theMessage
end tell

Outlook app (MacOS):

tell application "Microsoft Outlook"
	activate
	set messageSubject to "[[theSubject]]"
	set messageBody to "[[theBody]]"
	set recipientName to "[[theRecipientName]]"
	set recipientAddress to "[[theRecipientAddress]]"
	set attachmentPath to "[[theFileName]]"
	set theMessage to make new outgoing message with properties {subject:messageSubject, content:messageBody}
	make new recipient at theMessage with properties {email address:{name:recipientName, address:recipientAddress}}
	make new attachment at the end of theMessage with properties {file:attachmentPath}
	send theMessage
end tell

Outlook app (Windows):

Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0)
With MyItem
.To = "[[theRecipientAddress]]"
.Subject = "[[theSubject]]"
.Body = [[theBody]]
.Attachments.Add("[[theFileName]]")
.Send
End With

On 19/2/19, 8:00 am, "use-livecode on behalf of Hershel F via use-livecode" <use-livecode-bounces at lists.runrev.com on behalf of use-livecode at lists.runrev.com> wrote:

    Hi every one, wondering how i can send an email with an attachment (invoice) direct from my app with user’s email client (mail)?
    using the revMail only give the possibility for contents of fields, any work arounds or printing into a fld then putting the fld into the email?
    
    Thanks in advanced. HershelF
    _______________________________________________
    use-livecode mailing list
    use-livecode at lists.runrev.com
    Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
    http://lists.runrev.com/mailman/listinfo/use-livecode
    



More information about the use-livecode mailing list