-- Downloaded From: http://c-command.com/scripts/mailsmith/forward-messages -- Last Modified: 2007-08-17 property punctDelim : "-----" on run set theList to getList() if theList is not {} then my doAction(theList) else display dialog "No messages were selected" buttons "Ok" end if end run on doAction(mList) tell application "Mailsmith" set theContents to "" if length of mList > 1 then set theContents to my beginOuterDelim(mList) set n to 1 repeat with m in mList set theContents to theContents & my beginInnerDelim(n, mList) set h to "" set h to h & ("Subject: " & subject of m & return) set h to h & "From: " try set h to h & originator of m & return on error set h to h & return end try set theRecipients to "" repeat with r in to_recipients of m set theRecipients to theRecipients & my addressString(r) & ", " end repeat if theRecipients is not equal to "" then set theRecipients to characters 1 thru ((length of theRecipients) - 2) of theRecipients set h to h & ("To: " & theRecipients) end if set theCCs to "" repeat with c in cc_recipients of m set theCCs to theCCs & my addressString(c) & ", " end repeat if theCCs is not equal to "" then set theCCs to characters 1 thru ((length of theCCs) - 2) of theCCs set h to h & ("CC: " & theCCs) end if set theContents to theContents & h & return & return set theContents to theContents & contents of m set theContents to theContents & my endInnerDelim(n, mList) set forwarded of m to true set n to n + 1 end repeat set theSubject to "Fwd: " & subject of item 1 of mList if length of mList > 1 then set theContents to theContents & my endOuterDelim(mList) end tell makeMessage(theSubject, theContents) end doAction on makeMessage(theSubject, theContents) tell application "Mailsmith" try make new message window set subject of window 1 to theSubject set contents of window 1 to theContents on error beep display dialog "Something went wrong." buttons {"Ok"} default button 1 end try end tell end makeMessage on getList() tell application "Mailsmith" set retry to false try set mList to get selection as list set m to item 1 of mList if class of m is not message then set retry to true on error set retry to true end try if retry then set retry to false try set mList to message of window 1 as list on error set retry to true end try end if if retry then set mList to {} end tell return mList end getList on beginInnerDelim(n, mList) if length of mList > 1 then return return & punctDelim & "Begin Message " & n & punctDelim & return else return punctDelim & "Begin Forwarded Message" & punctDelim & return end if end beginInnerDelim on endInnerDelim(n, mList) if length of mList > 1 then return return & punctDelim & "End Message " & n & punctDelim & return else return punctDelim & "End Forwarded Message" & punctDelim & return end if end endInnerDelim on beginOuterDelim(mList) return punctDelim & "Begin Forwarded Messages" & punctDelim & return end beginOuterDelim on endOuterDelim(mList) if length of mList > 1 then set s to "s" else set s to "" end if return return & punctDelim & "End Forwarded Messages" & punctDelim end endOuterDelim on addressString(r) tell application "Mailsmith" set s to display name of r set theAddress to address string of r if theAddress ­ "" then set s to s & " <" & theAddress & ">" end if end tell return s end addressString