To whom it may concern: At our company we use both Outlook 2000 (OL) and Evolution (Evo) for our email and calendaring needs. We have had quite a number of problems with exchanging meeting requests and sharing freebusy information. Most of these problems seem to be solved (for) now and I'd like you to see the solution for the meeting requests problem. Maybe it will help solve yours. If you are interested in the freebusy solution, tell me and I will post that one too! Meeting Requests ---------------- We had 2 problems: 1. OL sent winmail.dat attachments 2. OL couldn't read Evo meeting requests (empty message, showing only the text 'Event information' 3. Evo doesn't tell what someone responded to a meeting request (accepted, denied, etc) The first was solved by telling OL to only send calendaring information using iCal. (Menu: Tools/Settings/Calendar Options/..) This resulted in another problem: 4. Some OL clients could not see meeting requests from other OL clients! The got completely empty messages. What was going on??? Well, to be short, we used procmail to filter these messages and changed some headers. One issue was the multipart/alternative MIME Type Evo uses. That was fixed by changing it into multipart/mixed. The other was to change the MIME Type of OLs messages from text/calendar into multipart/mixed. The third thing we did, whas to extract the PARTSTAT info (which tells us how somebody replied to a meeting request in Evo) and added a new DESCRIPTION with that info. Below you can see our solution. Please be careful when trying it yourself. Mail could get lost if you don't know what you are doing. Please tell me what you think of it! Regards, Roald procmailrc ---------- # From Evolution :0 * ^X-Mailer:.*Evolution { :0 Bfw * ^Content-Type: *text/calendar | /usr/local/bin/meeting_request_evo.pl } # From Outlook :0 * ^X-Mailer:.*Outlook { :0 Bfw * ^Content-Type: *text/calendar | /usr/local/bin/meeting_request_ol.pl } meeting_request_evo.pl ---------------------- open(STDIN, "-"); $disposition = "Content-Disposition: inline; filename=calendar.ics"; while (<STDIN>) { s/(multipart\/alternative)/multipart\/mixed/; s/(Content-Type: text\/calendar.*)$/$disposition\n$1/; s/(PARTSTAT=3D)(.*)(:MAILTO.*)$/$1$2$3\nDESCRIPTION: $2/; $mail .= $_; } close(STDIN); open(STDOUT, ">-"); print STDOUT $mail; close(STDOUT); meeting_request_ol.pl --------------------- open(STDIN, "-"); $boundary = "=-BOUNDARY".int(rand(1000000000000000)); $mulipartcontenttype = "Content-Type: multipart\/mixed; boundary=\"$boundary\""; while (<STDIN>) { s/(Content-Type: text\/calendar.*)$/$mulipartcontenttype/; $calendarcontenttype = $1 if $1; $mail .= $_; } close(STDIN); $prepart = qq| --$boundary Content-Description: Event information Content-Type: application/octet-stream; name="Meeting_Request.ics" Content-Disposition: inline; filename="Meeting_Request.ics" Content-Transfer-Encoding: 8bit |; $postpart = "^ \n$boundary--"; $mail =~ s/(BEGIN:VCALENDAR)/$prepart\n$1/m; open(STDOUT, ">-"); print STDOUT $mail; close(STDOUT); ---------------------------------
Attachment:
signature.asc
Description: This is a digitally signed message part