Reputation: 7170
So i've been searching around for a way to do the following, sequentially in Mail.app, using AppleScript:
Why would i want to do something that appears to be so retarded?
So why not just ask for an Applescript that formats your outgoing message directly?
Still learning the ropes with Applescript, so would greatly appreciate it if anyone could cook up an AppleScript that does the requested.
My intention is to trigger the Applescript when i hit "Send Message" (through the lovely Keyboard Maestro).
Here's the skeleton applescript code i could come up with:
set theFont to "Lucida Sans, Lucida Sans Unicode, Lucida Grande, Verdana, Arial"
set theSize to 12
tell application "Mail"
-- 1. intercept an outgoing message
set outMsg to front outgoing message
-- 2. make and exact duplicate of this outgoing message
-- need a little help with extracting...
set fmtMsg to make new outgoing message with properties
{ sender:,
subject:”Convert”,
content:”Please convert and send”
message signature:,
to recipient:,
cc recipient:,
bcc recipient:
}
tell fmtMsg
-- 3. format the text/content etc of this newly made message
set font of content to theFont
set size of content to (theSize)
-- set visible to true
-- 4. send this newly formatted message
send
-- 5. disregard the original one.
-- help?
end tell
end tell
Cheers.
Upvotes: 0
Views: 1615
Reputation: 6516
I haven't worked with Mail that much, but I've composed a script that should do the job...
set the mail_recipient to the text returned of (display dialog "To:" default answer "")
set the mail_subject to the text returned of (display dialog "Subject:" default answer "")
set the mail_content to the text returned of (display dialog "Enter your message here (for a new line type \"\\n\"):" default answer "")
set prevTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to "\\" & "n"
set this_text to every text item of the mail_content
set AppleScript's text item delimiters to return
set the mail_content to this_text as string
tell application "Mail"
tell (make new outgoing message with properties {visible:true, subject:mail_subject, content:mail_content})
make new to recipient at the end of to recipients with properties {address:mail_recipient}
send
end tell
end tell
I haven't added error checking in the script (check for a valid address for the recipient).
As you said, you can't change the recipient's font; that might be considered harassment.
If this script isn't satisfactory, just let me know and I'll change it for you. :)
UPDATE: I just read up on using AppleScript with Mail, and just realized that Mail has huge limitations regarding AppleScript. I think your best bet would be to use GUI Scripting
. This script is kind of hacky, but it should work.
tell application "System Events" to tell process "Mail" to set the mail_subject to (get the value of the first text box)
tell application "Mail" to set this_message to the content of the first message of mailbox "Sent" whose subject is the mail_subject
UPDATE 2:
tell application "System Events"
tell process "Mail"
set the mail_recipient to (get the value of the first text field)
set the mail_subject to (get the value of the fourth text field)
set the mail_content to (get the value of the last text field)
my create_new_message(mail_recipient, mail_subject, mail_content)
end tell
end tell
on create_new_message(recipient, subject, content)
tell application "Mail"
quit saving no
activate
tell (make new outgoing message with properties {subject:|subject|, content:|content|)
make new recipient at the end of to recipients with properties {address:|recipient|}
send
end tell
end tell
end create_new_message
Upvotes: 1