not supported calendar message.ics


  • Hi,

    From within my application I am creating and emailing a calendar with content-type text/calendar. It works fine for years but on some clients with Outlook 2007 and 2010 we get the message in the title. If you double click it then it opens as a normal calendar.

    I asked the same question before here:

    but there weren't any solution since then. MS KB also mentions it here:

    but 'Cause' doesn't match with my case.

    I hope office developers would have more ideas. Here is a sample content that is not supported:

    PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
    TZID:Eastern Time (US & Canada)
    TZNAME:Standard Time
    TZNAME:Daylight Savings Time
    DTSTART;TZID="Eastern Time (US & Canada)":20120725T080000
    DTEND;TZID="Eastern Time (US & Canada)":20120725T081500
    DESCRIPTION:General discussion with:\nJoe Doe
    Can anyone see why would it be not accepted on some 2007/2010 clients?

    Thanks in advance.

    Friday, July 27, 2012 12:47 PM

All replies

  • Hi CetinBasoz,

    Thanks for posting in the MSDN Forum.

    I will involve some exports into your issue, let's see whether they can solved it. There might be some time delay, appreciate for your patience.

    Have a good day,


    Tom Xu [MSFT]
    MSDN Community Support | Feedback to us

    Monday, July 30, 2012 2:28 AM
  • Hi Cetan,

    As far as I know, Microsoft doesn't have documentation regarding what Outlook and Exchange read/write for ICS files. However, if I use Outlook 2010 to export a test calendar folder to ICS and then add this information to your ICS file, it opens as a calendar (as opposed to an appointment):


    Of course, I just did a quick quick test and it seems this is the key lines you'd need to add, but overall I'm afraid there's some reverse engineering that would need to be done here. Of course, saving out a calendar may save out more data than Exchange/Outlook needs in order to read an ICS file. But once you have a saved ICS file from Outlook, that should be a good starting point from which to see what lines need to be added.

    Bill Jacob - Microsoft Customer Service & Support - Developer Messaging

    Wednesday, August 01, 2012 7:54 PM
  • Well actually MS has documentation suggesting to follow RFC 2445 (and unfortunately I listened to them). This works in previous versions and MS Office team broke it someway! The question is what is invalid to "some" Office 2007/2010 that is valid to previous versions?

    It is a pity no one from MS Office team gets involved in such problems and tell exactly what the problem is. If I could consistently reproduce this I could have a solution but this doesn't happen on all installations.

    Or to put it in another way, does anyone have a format that would work in all Office versions?

    Friday, August 03, 2012 12:07 PM
  • Hi Cetin,

    Sorry, I didn't realize that this was working on some 2007/2010 clients but not others. Since I believe Exchange is likely processing these messages, I'd check for differences between Exchange versions/builds for the working and non-working users. Also, I'd verify the build number of Outlook to see if there's a difference there.

    Bill Jacob - Microsoft Customer Service & Support - Developer Messaging

    Friday, August 03, 2012 2:25 PM
  • No way. I can't do that. That would mean checking hundreds of our customers. Office team would know what they have changed. Can't you simply ask them?
    Saturday, August 04, 2012 11:41 AM
  • Cetin, at this point we are not sure if this is an Outlook or Exchange issue. I am taking an educated guess, but based on what I've heard so far, it sounds like this is likely an Exchange issue and not Outlook. Are you able to reproduce this problem yourself, or are you just receiving customer reports that it is happening?

    I did see a report that Exchange 2007 apparently doesn't handle extra whitespace in the ICS file well, so I would definitely check that. There is some in your RRULE line posted above, but I presume that is due to how it was pasted into the online forum?

    If you are saying that it works on some Outlook machines and not others (same version), then either there is a differennce in the Outlook version/build number, Exchange version, or perhaps some other environmental factor that is affecting how these ICS files are being processed (message format, account types, etc.). There is not going to be somebody here at Microsoft that can provide a "magic answer" as to what may have changed in the past five years (actually more like eight years, given our product cycles). We need to narrow this down by understanding what it takes to be able to reproduce this problem, and once we can reproduce the problem, then we can investigate further into the root cause as to why it's happening.

    Also, from what I've read in internal comments, that particular RFC is somwhat vague. So I would suggest that using an Outlook calendar that's been saved as ICS is probably the best approach to take as far as ICS file format guidance is concerned (at least in terms of how Exchange/Outlook interpret ICS).

    Overall, if this is a critical issue for you, then I would suggest it would probably be best to open a support incident so someone can work 1-1 with you on this. But even there, having access to a machine and environment that can reproduce the problem is going to be key.

    Bill Jacob - Microsoft Customer Service & Support - Developer Messaging

    Monday, August 06, 2012 6:03 PM
  • I don't have exchange nor can I reproduce this on my installations. I get these from customer reports.

    There is no space nor a typo due to pasting here in RRULE. That is the formatting defined in RFC 2445 and RFC 2445 is the standard that was suggested by Office in documentation.

    Yes that is what I am saying. It doesn't occur in all installations but some. I don't want a magic answer but the developers in Office team, unlike me, have a chance to debug and tell me why would I see this. The question is simple, if this is really invalid then it should display as so in all outlook versions. If not, then surely developer team know why it is invalid. At the end it is them who put code to generate that message there. If I had the sources I could trace myself.

    This was really started from an ICS saved from Outlook:) So I am back to square one.

    Pity I submitted this when I was still an MVP and didn't use any of my support incidents then, I don't think I could do that now. I believe this to be a bug and expect it to be corrected. That is all.

    Tuesday, August 07, 2012 8:53 AM
  • To add to what Cetin have stated. I too have the same problem with the meeting invites generated from one of our in house calendar app. I am able to provide few more inputs related to the problem.

    1)The problem happens only for users who have their mailboxes in Exchange 2010(we had a recent migration for a selected user set).

    2)It was and is working fine in other exchange server versions.

    hope my points helps. expecting a solution from the MS team soon.



    Tuesday, August 07, 2012 8:52 PM
  • I have the same problem with different results. both using Outlook 2010

    Sending from ATT email account to Exchange acct i get the error message above. I cannot open the ics file. If i open it as an html file it reads something like




    Previously, whenever i sent an all day appointment, it came in as a two day event in the PC that goes thru exchange.

    When I send from the att email account to another pc with att email, it comes all printed out as an email message thats about 2.5 pages long. Lots of things like TSMHPDvglhxo.gEL999 etc etc etc

    So all Microsoft products. and they don't work together.

    And I'm not expert enough to mess with the registry.

    Please help.

    Sunday, August 19, 2012 6:23 PM
  • Hi everyone,

    I apologize for the delay. I've been doing some more research, and also discussing this with the Exchange support team. Overall, Exchange 2010 did update its ICS processing and it generally is more restrictive than previous versions of Exchange. I'm sorry, but we do not have documentation that details all of the exact changes. However, Exchange should be following the public RFC for ICS files. The reality, however, is that Exchange/Outlook's implementation of calendaring pre-dates these RFCs, so there is always that challenge of matching some concepts in the RFC with how calendaring works in the Exchange/Outlook/MAPI world.

    From everything I can see, and based on the other two add-on posts in this thread, the key factor with these issues is having these ICS files processed by Exchange 2010. I'm sorry, but it's not realistic for us to analyze the various individual ICS files that are generated by other software and also created "manually" by other solutions, so the best I can offer in this public forum is this rather general advice:

    1. Given calendaring differences between Exchange and the RFCs, the best approach is to export an appropriate ICS from Outlook and see what Outlook is saving out. That is likely to be the best indicator of what Exchange will be expecting, and then you can try changing the ICS file accordingly and re-send it through Exchange to try to narrow down exactly what seems to be causing the problem. Admittedly, this is not a fun process.

    2. Carefully check your ICS files against the RFC specifications to be sure they are strictly followng the "musts," "shoulds," etc.

    3. If you are pretty sure that the ICS file is valid based on the RFC, please consider opening a support incident and someone can work with you directly on this to determine if there is a bug on the Exchange side. If it's determined that there is, then the incident will be refunded. But if the ICS file is not adhering to the RFC, then you would be charged for that incident.

    Bill Jacob - Microsoft Customer Service & Support - Developer Messaging

    Friday, August 31, 2012 2:28 PM
  • You are not helping me at all. We are back t square one. Exchange is not following the public RFC. It has its own restrictions some of which are documented but most of which is left in dark.

    1) It is actually an export from Outlook that I started with. It shouldn't be my or my customers' probem that Outlook and Exchange are behaving differently. You are right it is not a fun process installing multiple versions of Outlook and Exchage and then try out where it fails.

    2) I have done that a zillion times in the past. It does follow the specifications. If you don't believe, you have it in the first message and RFC is published online, you can check against it and verify. Or show me where it doesn't and I would simply correct it.

    3) I am pretty sure but this incident thing is sounding like a gamble threatining me. I did submit another bug while I was on this subject years ago and in turn lead to a very serious vulnerability to be fixed. That doesn't grant me a free incident, does it:)

    What I want is pretty simple. Someone from the office team would tell me what is wrong within this ICS to flag it as invalid. I can only compare to RFC and it is pretty valid.

    Actually I am hopeless.

    Monday, September 03, 2012 11:53 AM
  • Cetin, I am sorry this is a difficult issue for you and I understand your frustration. However, in terms of analyzing RFCs and custom ICS files, that is really beyond the scope of what we can assist with here in the forums. Having discussed this with Exchange support engineers, I was told that they often have to debug Exchange in order to see exactly what is going on, so that would be something we'd need to handle 1-1 with you as part of a support incident.

    Bill Jacob - Microsoft Customer Service & Support - Developer Messaging

    Friday, September 07, 2012 7:06 PM
  • OK I was hopeless anyway. I hate Office team likes to break working codes with each new version.
    Thursday, September 13, 2012 2:41 PM
  • This is my code in VB.Net. We are using Exchange 2010

    Hope this will help

        Public Sub SendAppointment(ByVal sender As String, ByVal displayName As String, ByVal recipient As String, ByVal subject As String, ByVal message As String, ByVal startTime As DateTime, ByVal location As String)

            Dim exServer As New SmtpClient(ExchangeServer)

            Dim appointmentMessage As New MailMessage()
            appointmentMessage.From = New MailAddress(sender, displayName)
            appointmentMessage.Subject = subject
            appointmentMessage.Body = message

            Dim icsBuilder As New StringBuilder()

            icsBuilder.AppendLine("PRODID::-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN")
            icsBuilder.AppendLine(String.Format("CREATED:{0:yyyyMMddTHHmmss}", DateTime.Now))
            icsBuilder.AppendLine(String.Format("DTSTAMP:{0:yyyyMMddTHHmmss}", DateTime.Now))
            icsBuilder.AppendLine(String.Format("DTSTART:{0:yyyyMMddTHHmmss}", startTime))
            icsBuilder.AppendLine(String.Format("DTEND:{0:yyyyMMddTHHmmss}", startTime.AddHours(1)))
            icsBuilder.AppendLine("LOCATION: " + location)
            icsBuilder.AppendLine(String.Format("UID:{0}", Guid.NewGuid()))
            icsBuilder.AppendLine(String.Format("SUMMARY;LANGUAGE=en-us:{0}", appointmentMessage.Subject))
            icsBuilder.AppendLine(String.Format("DESCRIPTION:{0}", appointmentMessage.Body))
            icsBuilder.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", appointmentMessage.Body))

            icsBuilder.AppendLine(String.Format("ORGANIZER;CN=""{0}"":MAILTO:{1}", IIf(appointmentMessage.From.DisplayName = "", appointmentMessage.From.Address, appointmentMessage.From.DisplayName), appointmentMessage.From.Address))

            icsBuilder.AppendLine(String.Format("ATTENDEE;CN=""{0}"";RSVP=TRUE:mailto:{1}", IIf(appointmentMessage.To.Item(0).DisplayName = "", appointmentMessage.To.Item(0).Address, appointmentMessage.To.Item(0).DisplayName), appointmentMessage.To.Item(0).Address))


            Dim ct As System.Net.Mime.ContentType
            ct = New System.Net.Mime.ContentType("text/calendar")
            ct.Parameters.Add("method", "REQUEST")
            Dim avCal As AlternateView
            avCal = AlternateView.CreateAlternateViewFromString(icsBuilder.ToString(), ct)

        End Sub

    Thursday, October 11, 2012 5:28 PM
  • Thanks Tina Cajulao.

    We are using Outlook 2010 and I followed the same way as Tina's code.

    The appointment gets sent to users email address and user has the option to accept or decline.

    Thanks again.

    Wednesday, December 12, 2012 8:06 PM
  • It doesn't have RRULE and doesn't follow RFC standard. May work for 2010 without rules. The problem is when there is recurrence.
    Thursday, December 13, 2012 1:15 PM