Showing posts with label Mail. Show all posts
Showing posts with label Mail. Show all posts

Wednesday, June 24, 2009

Once-a-Day Email

This is the fourth post in a series on Extreme GTD.

I get around 600 emails a day at work. With a lot of hard work on automatic filters, I can get that down to about 300. I don't subscribe to any Internet mailing lists, so all 300 are real work emails.

The way I have learned to deal with this, without spending my whole day reading and replying to emails, is to process them only once per day. I find that this is easiest to do in the morning. I wake up very early, get to the office before anyone else, and power through the whole lot in one sitting. I also process my in tray and notebook. It takes about 2-3 hours to do it properly.

Then I close my email for the rest of the day.

You would think that this would be a problem, but it's surprising how little difference it makes to my interactions with other people. But it makes a huge difference to me. After my email sprint in the morning,

  • all my inboxes are empty,
  • I am completely up-to-date on everything that's happening,
  • all my next actions lists are updated, and
  • I have scheduled my actions for the day.

It's awesome.

Part of my secret for getting through email quickly is a view I have set up in Outlook* which is very similar to the "conversation view" in Gmail. (Any email application that allows grouping of emails by conversation/thread will work well, especially if it has the ability to show a small preview of the first couple of lines of text.) Since I don't read email during the day, all the conversations that I am CCed on carry on happily collecting into conversation threads.

As I go through my emails in the morning, it's very quick to see which conversation threads will probably not require my attention, and just delete the whole thread in one keystroke. Gone. There are also usually a large number of threads that could be important, but I just expand the thread and scan the preview lines. This is great for picking up when someone suddenly directs the conversation to me - the first line is "Will, Do you..." So this trick helps me whittle down 300 emails to about 100 fairly quickly. But the real beauty of this is that it's amazing how many conversations end by themselves without me needing to get involved.

I think people don't seem to notice that I'm only reading email once a day, because if I reply, it's usually before they arrive in the office in the morning, so no email goes unanswered for more than 24 hours. About 2-3 times per week, someone will ask me, "Did you see my email?" Although I have my Inbox view closed, I still have Outlook open, so I can quickly look if I have to.

My advice: Don't knock it 'til you try it. You might be surprised at how well this works.

* I will post about my Outlook GTD set-up in a later post.

Sunday, June 21, 2009

How to Stop MobileMe from Deleting Trash After 30 Days

MobileMe email has the annoying "feature" that unlike Gmail, if you "delete" an email, it only stays in the "Trash" folder for 30 days.

Here is a simple workaround for this problem:
  1. Log into the MobileMe Mail site, and add a folder called "Archive" (or something else if you prefer). Move all your existing deleted emails in your Trash folder into Archive.
  2. If you use MobileMe with Mail.app, right-click your MobileMe Inbox and select Synchronize MobileMe. Your new Archive folder should appear somewhere on the mailboxes pane. Select the Archive folder, and then go up to the Mailboxes menu and select Use this mailbox for > Trash. On my system, it changed the name of the folder to "Deleted Messages" when I did this.
  3. If you use MobileMe on your iPhone, go into the Settings app and then Mail, Contacts, Calendars > MobileMe > Account Info > Advanced > Deleted Mailbox, then select your Archive folder.
This might actually make the new search on server feature useful!

Disclaimer: I just followed the above steps today. In theory it should work, but the above is untested. I will post a follow-up if I have any problems...

Tuesday, October 07, 2008

Thursday, August 07, 2008

AppleScript to generate iCal events from email

I just figured out a way to get my work calendar copied onto my iPhone! Yay!!

A bit of background first:

My company doesn't have Exchange, or any other real "groupware". For email, there's just a simple POP server (uuurgh!) and for calendar, they have a custom-built intranet application (huh?!).

The intranet calendar system has a function to send an automatic email alert whenever somebody books an appointment with me in my calendar. The email goes to my work email account, but I have configured an Outlook rule to automatically forward it to my home email address.

When it arrives at my Mac at home (which is always on), I have a Rule in Mail.app which runs the below AppleScript. The script parses the contents of the email, and creates a new event in iCal.

iCal syncs with MobileMe, which in turn syncs with my iPhone. Hooray!!

I haven't used this in anger yet, so I'll be trying it out for the first time tomorrow.

Known limitations:

  • It's highly customised to the format of the emails I get from the intranet calendar system.
  • It doesn't automatically handle recurring events. The first event will be registered, but I have to set the recurring settings myself.
  • It doesn't handle updates or cancellations of events. If an event is moved, it will simply register it again at the new date/time. The old one will still be there.
I'm yet to discover just how long it takes for a new event to finally show up on my iPhone, but based on experience with MobileMe "push", I'm expecting at least a 15~20 minute delay.

How to install:
  1. Launch the application Script Editor and copy the code below.
  2. Save the script somewhere. I saved it in my Documents folder as "MailToCalendar".
  3. Open Mail and select Mail > Preferences... from the menu bar.
  4. Under Rules, click Add Rule.
  5. Give the rule a name (mine is "MailToCalendar").
  6. Create the conditions to recognise the alert emails (mine is Subject Contains "スケジュール予約状況案内").
  7. Add the actions Delete Message, Mark as Read, and Run AppleScript (pointing to the location of the AppleScript you saved).
  8. Click OK. That's it.
Many thanks to AK who gave me a sample AppleScript to get started with! :-)
(*
Make an iCal event from an email
AK  IT Carlow Ireland May 2005
and Will Hains Tokyo August 2008
*)

 

using terms from application "Mail" on perform mail action with messages MessageList for rule theRule -- say "Starting MailToCalendar" set OldDelim to AppleScript's text item delimiters

tell application "Mail" set ThisOne to item 1 of MessageList set TheDetails to content of ThisOne end tell --Mail

set AppleScript's text item delimiters to {"\n"} set TheDetails to text items of TheDetails set TheTopic to "" set TheStart to current date set TheEnd to current date set ThePlace to "" set TheDescription to ""

repeat with ThisDetail in TheDetails set AppleScript's text item delimiters to {"\n"} try -- find the date if "日付:" is in text item 1 of ThisDetail then set AppleScript's text item delimiters to {":"} set TheDateTimeRange to text item 2 of ThisDetail

set AppleScript's text item delimiters to {"-"} set TheStartDateTime to text item 1 of TheDateTimeRange set TheEndDateTime to text item 2 of TheDateTimeRange

set AppleScript's text item delimiters to {" "} set TheStartDate to text item 1 of TheStartDateTime set TheStartTime to text item 2 of TheStartDateTime set TheEndDate to text item 1 of TheEndDateTime set TheEndTime to text item 2 of TheEndDateTime

set AppleScript's text item delimiters to {"/"} set year of TheStart to text item 1 of TheStartDate set month of TheStart to text item 2 of TheStartDate set day of TheStart to text item 3 of TheStartDate set year of TheEnd to text item 1 of TheEndDate set month of TheEnd to text item 2 of TheEndDate set day of TheEnd to text item 3 of TheEndDate

set AppleScript's text item delimiters to {":"} set time of TheStart to (text item 1 of TheStartTime) * hours + (text item 2 of TheStartTime) * minutes set time of TheEnd to (text item 1 of TheEndTime) * hours + (text item 2 of TheEndTime) * minutes

-- say "the start is " & TheStart -- say "the end is " & TheEnd end if --Date

-- find the place if "利用設備:" is in text item 1 of ThisDetail then set AppleScript's text item delimiters to {":"} set TheMeetingRoom to text item 2 of ThisDetail set AppleScript's text item delimiters to {"会議室"} set ThePlace to text item 1 of TheMeetingRoom -- say "place is " & ThePlace end if --Place

-- find the topic if "予定:" is in text item 1 of ThisDetail then set AppleScript's text item delimiters to {":"} set TheTopic to text item 2 of ThisDetail -- say "the topic is " & TheTopic end if --Title

-- find the description if "内容:" is in text item 1 of ThisDetail then set AppleScript's text item delimiters to {":"} set TheDescription to text item 2 of ThisDetail -- say "the description is " & TheDescription end if --Description

on error errStr number errorNumber say "MailToCalendar error! " & errStr end try end repeat --iterate through fields

--set up the event in iCal tell application "iCal" -- say "Will now attempt to register in iCal" tell calendar 2 --CHANGE THIS to sequence number of target calendar set newItem to make new event at end of events with properties {start date:TheStart, end date:TheEnd} set summary of newItem to TheTopic set location of newItem to ThePlace set description of newItem to TheDescription -- say "registered in iCal" end tell --calendar end tell -- iCal

set AppleScript's text item delimiters to OldDelim -- say "finished MailToCalendar" end perform mail action with messages end using terms from

 

Friday, November 23, 2007

Gmail & Mail.app - the right way

I was getting a bit sick of firing up Parallels just to do email and GTD in Outlook, so today I thought I'd give Apple Mail another look.

I had already set up Gmail IMAP in Mail, but it was more than a little clunky, and I was a bit worried about what happened when I pressed "Delete".

I Googled around a bit and found these tips, which as far as I can tell iron out all the problems. To save you following the link, here's what you do:

  1. Set up Gmail IMAP according to Google's instructions
  2. Open Mail Preferences
  3. In General, set Dock unread count to Inbox Only
  4. In Accounts, select your Gmail account and set IMAP Path Prefix to "[Gmail]"
  5. In Composing, set Create Notes & To Do's in to On My Mac (notes & to do's really don't work with IMAP - don't even try)
  6. Close Mail Preferences
  7. From the menu bar turn on View > Organize by Thread if you haven't already
  8. Select the All Mail mailbox, then from the menu bar select Mailbox > Use This Mailbox For > Trash (this makes the Delete button in the toolbar work like Archive in Gmail)
  9. Repeat for the Spam mailbox - use it for Junk
  10. Repeat for the Drafts mailbox - use it for Drafts
  11. Repeat for the Sent mailbox - use it for Sent

That's it! Now Mail will essentially work just like the Gmail web UI, with one disappointing exception: when new messages arrive for existing conversations, Mail doesn't show the previous messages of the conversation in the Inbox, so you have to scroll through the reverse-order quoted text like a moron. I wonder if there's a way to use the Rules option to do this automatically... dunno.