How to Send iCal Invites to Outlook

When sending invitations with Apple's iCal program, the recipient receives an email with an attached .ics file that allows the recipient to add the event to their calendar and accept or decline the invitation. In sending out these invitations to an Outlook user, the functionality gets lost in translation and is not properly formatted or accessed with Microsoft Outlook. Editing the way iCal sends out the invitations, albeit a daunting task, helps to improve the Mac and PC interaction.

close-up of a person using a computer
credit: Ciaran Griffin/Stockbyte/Getty Images

Step

Open the Applications folder. Navigate to the iCal application. Right-click (Control-click) the iCal icon and select \"Show Package Contents.\"

Step

Navigate through iCal's contents to \"Resources.\" Inside the \"Resources\" folder, locate \"Mail.applescript.\"

Step

Highlight \"Mail.applescript.\" From the menu bar, select \"Edit\" > \"Copy.\" On the Desktop, paste (\"Edit\" > \"Paste\") the file as a backup. Return to the original \"Mail.applescript.\"

Step

Right-click the file and select \"Open with AppleScript.\" The AppleScript Editor will open.

Step

Navigate about midway down the script to the heading \"on send_mail_sbrp(subjectLine, messageText, myrecipient, invitationPath.\" Highlight the entire section starting with that heading and ending with \"end send_mail_sbrp\" and press \"Delete.\" (Don't worry, you made a back up in Step 3).

Step

Highlight, copy and paste the entire following entry within AppleScript in place of the entry you deleted in Step 5:

Step

on send_mail_sbrp(subjectLine, messageText, myrecipient, invitationPath) set pfile to POSIX file invitationPath set myfile to pfile as alias

Step

try -- define a carriage return set cr to (ASCII character 13) & (ASCII character 10)

Step

-- retrieve the user's name and e-mail set listOfAccounts to {}

Step

tell application \"Mail\" repeat with oneAccount in every account set listOfAccounts to listOfAccounts & ¬ {\"\"\" & (get full name in oneAccount) & \"\" <\" & ¬ (get email addresses in oneAccount) & \">\"} end repeat end tell

Step

if ((get length of listOfAccounts) is 1) then set theAccountTouse to get first item of listOfAccounts else set theAccountTouse to ¬ choose from list listOfAccounts ¬ default items (get first item of listOfAccounts) ¬ with prompt ¬ \"Please select which mail account to send the invitation from:\" ¬ without multiple selections allowed and empty selection allowed end if

Step

-- open and read the iCal event file to insert into an e-mail set myEventFileHandle to ¬ open for access myfile without write permission set myEventFileContent to read myEventFileHandle close myEventFileHandle

Step

-- pre-pend mail headers to the event contents set myNewEmailText to ¬ \"Subject: \" & subjectLine & cr & ¬ \"From: \" & theAccountTouse & cr & ¬ \"To: \" & myrecipient & cr & ¬ \"content-class: urn:content-classes:calendarmessage\" & cr & ¬ \"Content-Type: text/calendar;\" & cr & ¬ \" method=REQUEST;\" & cr & ¬ \" name=\"meeting.ics\"\" & cr & ¬ \"Content-Transfer-Encoding: 8bit\" & cr & cr & ¬ myEventFileContent

Step

-- create a random event file name set tempMailName to (random number from 1 to 1000000) & \".ics\" set aliasTempMail to \"/tmp/\" & tempMailName

Step

-- write the new e-mail to a temp file set myEventFileHandle to ¬ open for access (POSIX file aliasTempMail as string) with write permission write myNewEmailText starting at 1 to myEventFileHandle close myEventFileHandle

Step

-- use SENDMAIL to send the file with proper headers do shell script \"sendmail < \" & aliasTempMail

Step

-- delete the temp file do shell script \"rm \" & aliasTempMail on error errMsg display dialog errMsg end try end send_mail_sbrp

Step

Select \"Compile\" from the navigation toolbar. Select \"Save\" and exit AppleScript.

Step

Send out an iCal invitation. The Windows user with Microsoft Outlook will properly receive your iCal invitations now.