This is something I’ve been thinking about for a while and finally got around to doing this weekend. I configure lots of evaluations of the Casper Suite for my job, and part of those evaluations means keeping in touch with the team evaluating. An evaluation can last as long as a month, and, in some cases, far longer, but it’s important that during that time I maintain close contact with the person or persons evaluating to make sure they have a successful evaluation and fantastic experience. Because I can be juggling a dozen evaluations at a time, or more, it can be difficult to keep track of who to contact on a particular day, despite all the technology available at my fingertips to help me. (I’m just slow.)
Typically, I use a standard template that I send out to my evaluations that ask how they’re doing, if they have any questions, and reminds them when their eval expires. It’s easy to cut-and-paste and send it on a particular day, but believe it or not, when you’re on the road constantly or have other things going on, it’s harder to stay on top of that stuff than it sounds.
Anyway, long story short, I wanted to a way to schedule messages to go out on a particular day without me thinking about it. I can’t understand why this isn’t just part of every e-mail program out there already; I can’t be the only one who would find it useful. (Or maybe it is and I haven’t found it?) So I just did it myself. It’s a little bare-bones. When I find more time I’m going to throw in time selection (like send at 11:30 am) and make it more user friendly. And also port it for Mail.app. But feel free to do all that stuff on your own – the components are all there and editable so do whatever you want to them.
1) Download and unzip the ScheduleOutgoingMail.zip file
2) Double-click install.command to install.
3) Create a folder in Outlook titled whatever you want and save messages you want to be delivered on a particular day into that folder.
4) Launch Outlook for Mac 2011 and select the Schedule Outgoing Mail scripting addition from the menu, enter the case- and space-sensitive folder name you created in Step 3, and then the date you want to the messages to be sent. Note: The date must be in a particular format, m-d-yyyy: 1-1-2013, NOT 01-01-2013.
How it works:
The zipfile contains four files: an installer and three active components of the workflow.
One of the components is an app that will create a LaunchAgent in ~/Library/LaunchAgents. This LaunchAgent tells another component, the schedulesender.sh script, to execute every ten minutes.
The schedulesender.sh script loops through a directory of scripts ~/Library/ScheduledSend/ looking at a particular naming convention (m-d-yyyy.sh, e.g., 5-12-2013.sh). If a particular script’s name matches the current date as pulled from the script itself, that script is executed. The script tells Outlook to send mail in the folder that you specified during the script menu item execution from within Outlook.
The final piece of this puzzle is the script menu item. When you launch it, it asks you for the name of the folder and the date to send the mail within it. When you enter the name of the folder, it creates the scripts in the ~/Library/ScheduledSend/ directory. One of the lines in the script it’ll create is to send mail in the folder you specify. The next piece of information you enter is the date to send the mail. This is what gives the scripts in ~/Library/ScheduledSend/ their names. If the schedulesender.sh script, which runs every 10 minutes by directive of ~/Library/LaunchAgents/com.scheduledsend.plist, finds a script in ~/Library/ScheduledSend/ with a filename that matches the current date, that script is executed and the mail in that folder is sent.
It’s basic, it has a few funny little issues, but it works, and I’m finding it useful already. Feel free to fix it up, add or remove, and post back to the comments.
Hope this helps!