3

Im trying to create an Automator folder action that sends an email with an attached file.

In my folder the files will be generated with the email as name: Example: name@company.com.jpg, othername@othercompany.com.jpg and so on.

What I need is an action that copies the filename, remove the extension (.jpg), create an email and put the filename/email into the "To" and then sends the email.

I all ready have a working version where the file is attached to the e-mail and the content of the e-mail is filled out. But I can't find a solution to copy the file name and specify it to the "To" address.

Hope that someone out there can help me :-)

3

I've tried with Automator without succeeding looping through dropped files.

Here's a folder action script that does what you want, and how to attach it to a folder :

1. Open AppleScript Editor

2. Paste the following script into a new document

property mail_subject : "An image for you"
property mail_plain_content : "Attached you will the image you required." & return & return & "Best Regards" & return & "Automator"
property mail_html_content : "Attached you will the image you required.<br><br>Best Regards<br>Automator"

on adding folder items to this_folder after receiving these_items
    processItems(these_items)
end adding folder items to

on processItems(these_items)
    repeat with i from 1 to (count of these_items)
        set this_item to item i of these_items
        if isFolder(this_item) then
            processItems(getFolderItems(this_item))
        else
            processFile(this_item)
        end if
    end repeat
end processItems

on processFile(this_file)
    set mail_address to RemoveExtension(getFileName(this_file))
    tell application "Microsoft Outlook"
        set newMessage to make new outgoing message with properties {subject:mail_subject, plain text content:mail_plain_content, content:mail_html_content}
        tell newMessage
            make new recipient with properties {email address:{address:mail_address}}
            make new attachment with properties {file:this_file as alias}
            send
        end tell
        activate
    end tell
end processFile

on isFolder(this_item)
    tell application "System Events" to return (exists folder (this_item as string))
end isFolder

on RemoveExtension(this_name)
    -- This function comes from :
    -- http://www.macosxautomation.com/applescript/sbrt/index.html
    if this_name contains "." then
        set this_name to (the reverse of every character of this_name) as string
        set dot_offset to the offset of "." in this_name
        set this_name to (text (dot_offset + 1) thru -1 of this_name)
        set this_name to (the reverse of every character of this_name) as string
    end if
    return this_name
end RemoveExtension

on getExtension(this_name)
    if this_name contains "." then
        set this_name to (the reverse of every character of this_name) as string
        set dot_offset to the offset of "." in this_name
        set this_name to (text 1 thru (dot_offset - 1) of this_name)
        set this_name to (the reverse of every character of this_name) as string
        return this_name
    else
        return ""
    end if
end getExtension

on getFileName(this_file)
    tell application "Finder" to return name of this_file
end getFileName

on getFolderItems(this_folder)
    tell application "Finder" to return items of this_folder
end getFolderItems

3. Save it in your ~/Library/Scripts/Folder Action Scripts Folder

Menu File > Save

Go to the right folder : press cmd+G and paste:
~/Library/Scripts/Folder Action Scripts
and click Go

Save as : Image - Email using name as address.scpt (for example)
Format : Script

4. Create a new folder that will be watched for added items

5. Associate the script to the folder

In the Finder, right click on your folder, then select Services > Folder Actions Setup Select the new created Image - Email using name as address.scpt script

You're done, drop a file whose name is an address, mail will be sent.

  • WOW! This is exactly what I'm looking for. And look at that description... Excellent! You're to cool Bibou ;-) – Stefan Johannsen Mar 12 '13 at 13:06
  • Would it be possible to make a "Send active email" command to Outlook, so that the e-mails are send in the same action. Otherwise I have to press "send" manually on all the e-mails :-) – Stefan Johannsen Mar 12 '13 at 13:08
  • Replacing the "open" command by "send" in the on processFile / tell new Message part should do the trick. I've edited my answer accordingly. – Bibou Mar 12 '13 at 20:06
  • Thank you so much for your help. It's really appreciated :-) – Stefan Johannsen Mar 13 '13 at 9:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .