How to Send iCal Invites to Outlook

Techwalla may earn compensation through affiliate links in this story. Learn more about our affiliate and product review process here.
Image Credit: Ciaran Griffin/Stockbyte/Getty Images

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.


Step 1

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

Video of the Day

Step 2

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


Step 3

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 4

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


Step 5

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 6

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

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



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

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

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


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


-- 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


-- 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


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

-- 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


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

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


Step 7

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

Step 8

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




Report an Issue

screenshot of the current page

Screenshot loading...