ICS Email Attachment Not Working for Exchange Users - exchange-server

I am sending a meeting invitation as an email with an ICS attachment from a Java web application. Everything works fine when I send it to Outlook users who are not using an Exchange server. They get the appropriate Accept/Reject buttons and can add the meeting to their calendar.
Things are not working for users who are on an Exchange server, however. They get a meeting invite, but it lists themselves as the meeting organizer and they are unable to change any of the meeting details. They cannot accept or reject and cannot add it to their calendar.
It is almost like Exchange is altering or does not like the format of the ICS we are sending, but normal Outlook handles it just fine.
Here is the ICS we are sending. Does anyone know what we can change to make this work for Exchange users, in addition to Gmail and non-Exchange Outlook Users.
BEGIN:VCALENDAR
PRODID:-//fincrm//iCal4j 1.0//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:128
DTSTAMP:20110927T191127Z
DTSTART;VALUE=DATE-TIME:20110928T082000
DTEND;VALUE=DATE-TIME:20110928T085000
ACTION:DISPLAY
DESCRIPTION:Time is set to 8:20 AM
SEQUENCE:0
ORGANIZER:MAILTO:user1#ltest.com
LOCATION:Financial CRM Application
ATTENDEE:MAILTO:user2#test2.com
SUMMARY:CRM Task #128
END:VEVENT
END:VCALENDAR
I appreciate your suggestions.

I have figured out that sending the ICS as a Multipart MIME Message seems to work with both Gmail and Exchange. Here is some of the relevant Java code ("calendar" is the ICS string)
// Create an alternative Multipart
Multipart mp = new MimeMultipart("alternative")
BodyPart textPart = new MimeBodyPart();
textPart.setText(eventDescription);
BodyPart calPart = new MimeBodyPart();
calPart.addHeader("content-class", "urn:content-classes:calendarmessage")
calPart.setContent(calendar.toString(), "text/calendar;method=REQUEST")
mp.addBodyPart(textPart);
mp.addBodyPart(calPart);

I know that the is from a while ago, but you can solve this with the registry fix found here:
http://support.microsoft.com/kb/944094
I have tested this with Outlook 2010 running on Exchange 2010 and this allowed 3rd party events to be entered into the calendar when you are the organizer.

I have found that if the organizer is set to you, then Outlook 2011 on Mac will not offer to add the meeting to your Calendar. Removing the Organizer from the meeting seems to work well enough.
I have also found that if the ICS attachment is not the last item attached to a multipart message, it will be stripped.

Related

:iCal Event not added into organizer calendar

I am creating ics file with 2 attendee and a organizer.
Event is properly creating for both attendees and response is also received when they accept/reject the event. I am sending same invite to organizer as well. On organizer end, event is not adding into their calendar (accept/reject buttons are grayed out). Following two messages are showing:
At the meeting organizer, you do not need to respond to the meeting.
Meeting cannot be found in the Calendar.
How I can change the event so that it also create in organizer calendar?
BEGIN:VCALENDAR
PRODID:-//Appointment Confirmation Event//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20200506T190000Z
DTEND:20200506T200000Z
DTSTAMP:20200506T190000Z
ORGANIZER:mailto:test1#test.com
UID:Interview_47461#sterlinghoffman.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ_PARTICIPANT;RSVP=TRUE:mailto:test2#test.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;ROLE=REQ_PARTICIPANT;RSVP=TRUE:mailto:test3#test.com
X-MICROSOFT-CDO-OWNERAPPTID:-486846808
CREATED:20200504T130737Z
DESCRIPTION:
LOCATION:at 3423
SEQUENCE:0
SUMMARY:Phone Meeting
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
I tried with adding organizer as attendee but it not works.
ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;RSVP=TRUE;mailto:test1#test.com
Since it sounds like the ics file is not being generated by the organisers outlook calendar, then two possible solutions suggest themselves:
1) On the assumption that it would be redundant / duplication to add an event to organisers calendar (who would be assumed by the application to have already created the event in itself) possibly the more robust solution for across calendar applications: add a sent-by, as per https://icalendar.org/iCalendar-RFC-5545/3-8-4-3-organizer.html
ORGANIZER;SENT-BY="mailto:jane_doe#example.com":
mailto:jsmith#example.com
2) This might be an outlook bug. A quick search come up with same error messages https://developermessaging.azurewebsites.net/2011/09/30/accepting-ical-appts-in-outlook-when-you-are-the-organiser/ and indicates a hotfix. See also How can I add an ICS meeting automatically to the Organizer's calendar?
See also:
iCalendar does not create an event for organizer
ics not updating organizer calendar,
Sending iCalendar to an user who's also the organizer of the event (the last comment to answer about redundancy to add to organiser
Your iCalendar data has an error in organizer, that's why he is not being added to the calendar. As your organizer doesn't have any parameters and only has a cal-address it needs to be separated with colon : not semicolon ;. Correct organizer property:
ORGANIZER:mailto:test1#test.com
For more about this property (and iCalendar) you can read here.
RFC 5545 specification of organizer:
organizer = "ORGANIZER" orgparam ":" cal-address CRLF
If this is not only about the organizer showing up in the calendar, then you can find more answers to an actual Outlook error in this SO question.
Finally I found the issue. It was bug in Outlook. I followed the instruction given in following article and it works.
https://developermessaging.azurewebsites.net/2011/09/30/accepting-ical-appts-in-outlook-when-you-are-the-organiser/
https://support.microsoft.com/en-us/help/940403/a-new-meeting-request-is-not-saved-to-your-calendar-folder-after-you-c
Thank you #anmari

Cancelled mail ics showing "not supported"

Canceled invitation emails send to outlook has an attachment "not supported". This is the ics i'm using for cancel email invitation. Could someone help me to understand what i'm missing here.
PS: Gmail is able to parse this ics and it is removing the event from calendar.
BEGIN:VCALENDAR
VERSION:2.0
METHOD:CANCEL
PRODID:-//PYVOBJECT//NONSGML Version 1//EN
BEGIN:VEVENT
UID:fwefgWuxV6DNc1#QnzyZWc38uhPXw2
DTSTART:20190709T084500Z
DTEND:20190709T094500Z
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=DECLINED:mailto:p
rhrsei#helonp.com
CREATED:20190709T082113Z
DESCRIPTION:\nanfirst anlast has can
celled this meeting.\n\n************************************************\n
\nMessage/Description: canceled \n\n\n************************************
************\n\nHelop Company\n
DTSTAMP:20190709T082204Z
LAST-MODIFIED:20190709T082205Z
LOCATION:
ORGANIZER:mailto:reiuhfoiwetransf#helonp.com
SEQUENCE:1
STATUS:CANCELLED
SUMMARY:asia singapaore
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
The above is working with an outlook exchange server, but it is failing on o365 desktop client and even in office web app.
I ran into a same issue recently and just figured out the solution.
Looks like Microsoft has updated how they valuate Ical emails.
So it's not the ICS file that's corrupted, but if you're sending out a cancellation, you'll probably have some header that may say method=REQUEST. This works on all platforms but looks like Microsoft is checking if this is method=CANCEL for cancellation emails.
If you have a header of method=REQUEST and your ICS file is meant to cancel a meeting, it will then be corrupt. You'll have to change it to method=CANCEL.
Hope that helps!

.ics Calendar File always appears as busy in Outlook for Mac

I am attempting to send out .ics calendar event files which can be downloaded by users and saved to their Outlook calendars. The calendar event needs to appear as “Free” in Outlook. Below is a sample of the .ics event currently being sent out:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:http://company.ical.cls
BEGIN:VEVENT
DTSTART:20180425
SUMMARY:PTO for Babcock, Michael (22.5hrs)
DTEND:20180428
FREEBUSY:FREE
END:VEVENT
END:VCALENDAR
When an Outlook for Windows user downloads the above file and opens it in their Outlook calendar, the event appears correctly as Free time.
When an Outlook for Mac user downloads the above file it creates a new email with the .ics file attached.
To try to correct the problem for Mac users, I edited the FREEBUSY keyword several times to appear as:
FBTYPE:FREE:20180425T000000Z/20180428T000000Z
FBTYPE:20180426T000000Z/20180429T000000Z
FREEBUSY;FBTYPE=FREE:20180416T133000Z/20180429T170000Z
Outlook for Mac users could download the file with one of those new FreeBusy keywords and open it in their calendar, but it always appears as Busy. The strange thing is, if they open the file with the modified keyword on a Windows computer first, then the appointment appears as free on both Windows and Mac Outlook.
Has anyone found a FreeBusy keyword that allows Outlook for Mac users to see .ics calendar appointments as Free?
The 'Freebusy' component is VFREEBUSY, not VEVENT. Please see the RFC5545 specification. https://www.rfc-editor.org/rfc/rfc5545#section-3.6.4
VFREEBUSY cannot be nested under VEVENT. Also it does NOT say that FREEBUSY property can be used in VEVENT. The spec at https://www.rfc-editor.org/rfc/rfc5545#section-3.8.2.6 says:
FREEBUSY..... Conformance: The property can be specified in a
"VFREEBUSY" calendar
component.
...
The following is an example of a "VFREEBUSY" calendar component
used to publish busy time information:
BEGIN:VFREEBUSY
UID:19970901T115957Z-76A912#example.com
DTSTAMP:19970901T120000Z
ORGANIZER:jsmith#example.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.example.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
FREEBUSY is for requesting/responding/publishing availability windows.
To make the event appear in the calendar with the Free/Busy flag set to Free, use TRANSP:TRANSPARENT and X-MICROSOFT-CDO-BUSYSTATUS:FREE
For example:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:http://company.ical.cls
BEGIN:VEVENT
DTSTART:20180425
SUMMARY:PTO for Babcock, Michael (22.5hrs)
DTEND:20180428
TRANSP:TRANSPARENT
X-MICROSOFT-CDO-BUSYSTATUS:FREE
END:VEVENT
END:VCALENDAR

Getting a rsvp response from a created .ics file

I’m working on an OSX app where I want to create calendar events, add some attendees, add the event to the user Calendar, and send an invitation to the attendees. First I thought I could use the Eventkit framework, but for some reason you can’t add attendees to an event created by Eventkit. Instead I create an .ics file (see example below). I can add the .ics file to the Calendar and send it as an attachment in a mail as an invitation. The attendee can add it to his own Calendar and select accept in the rsvp section. However, the organizer never receives his acceptance. I have no idea how to get this to work and haven’t been able to locate any examples. Is this simply not possible or what am I doing wrong.
Any help is appreciated
BEGIN:VCALENDAR
PRODID:-//Org//App//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
UID:20120920T150350Z-70#http://localhost/www/
CREATED:20140920T150350Z
DTSTAMP:20140921T080800Z
DTSTART:20140921T080800Z
DTEND:20140922T060800Z
DESCRIPTION:Attend this meeting
SUMMARY:Meeting invitation
LOCATION:The office
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEED-ACTION;RSVP=TRUE:mailto:attendee#mail.com
ORGANIZER;CN=organizerName:mailto:organizer#mail.com
LAST-MODIFIED:20140921T080800Z
PRIORITY:1
SEQUENCE:0
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR
I too had the same issue. And now i found the solution.
This can be fixed by the line RSVP=TRUE,it seems you already added that.
So remove that ROLE and PARTSTAT in ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEED-ACTION;RSVP=TRUE:mailto:attendee#mail.com and make it as below.
ATTENDEE;RSVP=TRUE:mailto:attendee#mail.com
The above line is enough.
Your problem is due to a simple typo. You need ; instead of : between the parts.
Change:
RSVP=TRUE:mailto:attendee#mail.com
to
RSVP=TRUE;mailto:attendee#mail.com

How can I add an ICS meeting automatically to the Organizer's calendar?

Our java application generates ICalendar files using ical4j, and sends them out to users as part of an HTML e-mail notification. A couple of users (the Organizers of the meeting) report that the the "Accept", "Reject", etc. buttons for the meeting are grayed out, and unclickable. The meeting is not added to the Organizer's calendar.
How can I force the meeting to be added for the Organizer?
I configured the server temporarily to send the .ics file as an attachment (instead of inline), so that I could run it through a web-based ICalendar validator. The validator gave me a warning that the Version property was supposed to be the first property, but didn't find any other problems.
The ICalendar works normally for every user except the organizer.
I was able to reproduce the issue on my own Outlook account. I noticed that if I send the meeting notice through a gmail mail server, it works normally; but, when it comes from our internal Outlook server, it doesn't get added to the calendar.
A message is shown underneath the grayed-out meeting controls: "As the meeting organizer, you do not need to respond to this meeting."
Example ICalendar file generated by our system:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//MyCompany//Product//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20101202T210423Z
UID:77B17E9B-BE02-476E-816B-ED9558EE7D2A
DTSTART:20101230T133000
DTEND:20101230T143000
SUMMARY:Review Meeting for A1 CI Review #123456
LOCATION:BLDG - 123
CREATED:20101202T210423Z
LAST-MODIFIED:20101202T210423Z
TZID:America/New_York
ORGANIZER;CN="ORGANIZER, THE";SENT-BY="mailto:noemail#mycompany.com":mailto:myemail#mycompany.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CN="ATTENDEE, SOME":mailto:noemail#mycompany.com
END:VEVENT
END:VCALENDAR
Edit:
I tried adding the meeting organizer as an "Optional to" participant. No dice; same behavior.
Edited the question again to reflect my progress on the issue.
It looks like this issue might be solvable by applying a HotFix to Outlook.
Description of the Outlook 2007 post-Service Pack 1 hotfix package: January 28, 2008
It seems it could be related to setting ExtractOrganizedMeetings in the registry. Worth a try.
See:
You cannot accept an invitation that
is in a third-party calendar format
in Outlook 2007
As the meeting organizer, you cannot
accept a meeting request in Outlook
2007 if you used a public Calendar
for the meeting that you created
Add an ORGANIZER to the ICS file. Apparently Outlook 2007 assumes the organizer is the current user whereas previous versions did not.

Resources