我已经挖出了我不久前为某人写的脚本。
它适用于 Mail.app 中选定的电子邮件,将附件保存在用户临时文件夹中。然后将它们添加到您的新电子邮件中。正如我所说,您不能 AFAIK 只是将附件从原始电子邮件中拉出并放入新电子邮件中。
将其转换回邮件规则对您来说应该不难。
无论如何,您都会在脚本中更改明显的内容。就像您希望它发送而不是打开和显示新电子邮件一样。和身体,主题等。
#copyright Mark Hunte 2013
--using terms from application "Mail"
--on perform mail action with messages theMessages for rule theRule
-- set up the attachment folder path
set folderName to "temp"
set homePath to (path to temporary items from user domain) as text
set attachmentsFolder to (homePath & folderName) as text
tell application "Mail"
set theMessages to (get selection)
repeat with eachMessage in theMessages
delay 0.5
-- set up the folder name for this mail message's attachments. We use the time stamp of the date received time stamp
set timeStamp to (do shell script "date +%Y_%m_%d_%H%M%S")
set attachCount to count of (mail attachments of eachMessage)
if attachCount is not equal to 0 then
-- use the unix /bin/test command to test if the timeStamp folder exists. if not then create it and any intermediate directories as required
if (do shell script "/bin/test -e " & quoted form of ((POSIX path of attachmentsFolder) & "/" & timeStamp) & " ; echo $?") is "1" then
-- 1 is false
do shell script "/bin/mkdir -p " & quoted form of ((POSIX path of attachmentsFolder) & "/" & timeStamp)
end if
set attachList to {}
try
-- Save the attachment
#SET replaceBadCharsWithUnderscoreInFileNames TO TRUE IF YOU WANT BAD CHARACTERS REMOVED FROM THE FILE NAMES THAT MAY STOP THE FILES SAVING DOWN
set replaceBadCharsWithUnderscoreInFileNames to true
####
repeat with theAttachment in eachMessage's mail attachments
if replaceBadCharsWithUnderscoreInFileNames then
set originalName to my replaceBadChars((name of theAttachment as string))
else
set originalName to (name of theAttachment as string)
end if
set savePath to attachmentsFolder & ":" & timeStamp & ":" & originalName
try
save theAttachment in file (savePath)
copy (savePath) to end of attachList
end try
end repeat
--on error msg
--display dialog msg
end try
set theSubject to "forwarded email"
set theBody to " body of email "
set theAddress to "youeEmail@me.com"
set visable to true
set theForwardedMessage to make new outgoing message with properties {subject:theSubject, content:theBody & return & return}
tell theForwardedMessage
set visible to true
make new to recipient at end of to recipients with properties {address:theAddress} without quote original message
tell content
repeat with i from 1 to the count of attachList
set this_file to (item i of attachList as alias)
make new attachment with properties {file name:this_file} at after the last paragraph
end repeat
end tell
end tell
end if
delay 0.5
end repeat
end tell
--end perform mail action with messages
--end using terms from
on replaceBadChars(TEXT_)
--log TEXT_
set OkChars to {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "_", ".", "(", ")", "-", ",", space}
set TEXT_ to characters of TEXT_
repeat with i from 1 to number of items in TEXT_
set this_char to item i of TEXT_
if this_char is not in OkChars then
set item i of TEXT_ to "_"
else
end if
end repeat
set TEXT_ to TEXT_ as string
do shell script " echo " & quoted form of TEXT_
end replaceBadChars