none
Calendar Event Invitation Request Does Not Show Response Options - Microsoft Outlook for Mac (v15.30) RRS feed

  • Question

  • I have data in iCalendar format (https://en.wikipedia.org/wiki/ICalendar):

    BEGIN:VCALENDAR
    VERSION:2.0
    METHOD:REQUEST
    BEGIN:VTIMEZONE
    TZID:Eastern Standard Time
    BEGIN:STANDARD
    DTSTART:20071102T020000
    RRULE:FREQ=YEARLY;BYDAY=1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=11
    TZNAME:Eastern Standard Time
    TZOFFSETFROM:-0400
    TZOFFSETTO:-0500
    END:STANDARD
    BEGIN:DAYLIGHT
    DTSTART:20070301T020000
    RRULE:FREQ=YEARLY;BYDAY=2SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3
    TZNAME:Eastern Daylight Time
    TZOFFSETFROM:-0500
    TZOFFSETTO:-0400
    END:DAYLIGHT
    END:VTIMEZONE
    BEGIN:VEVENT
    ATTENDEE;CN=Gavin Kendall;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CUTYPE=INDIVIDUAL;RSVP=TRUE:MAILTO:example_email_address@example_domain.com
    DESCRIPTION:
    DTEND;TZID=Eastern Standard Time:20170127T163000
    DTSTAMP:20170127T203051Z
    DTSTART;TZID=Eastern Standard Time:20170127T163000
    LAST-MODIFIED:20170126T203051Z
    LOCATION:
    ORGANIZER;CN=Gavin Kendall:MAILTO:example_email_address@example_domain.com
    SEQUENCE:0
    ACTION:DISPLAY
    SUMMARY:Nevermind
    UID:33ae06bd-c247-47d7-acb9-a9bba802b53a
    END:VEVENT
    END:VCALENDAR

    The invitation request appears fine in Outlook for Windows (because it includes the Accept, Tentative, and Decline options and they're all functional):

    However, the response options are not available in the same invitation request viewed in Outlook for Mac (v15.30):

    I'm sending the invitation request using a C# application I wrote. Here's the code:

    StringBuilder sb = new StringBuilder();
                sb.AppendLine("BEGIN:VCALENDAR");
                sb.AppendLine("VERSION:2.0");
                sb.AppendLine("METHOD:REQUEST");
                sb.AppendLine("BEGIN:VTIMEZONE");
                sb.AppendLine("TZID:Eastern Standard Time");
                sb.AppendLine("BEGIN:STANDARD");
                sb.AppendLine("DTSTART:20071102T020000");
                sb.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=11");
                sb.AppendLine("TZNAME:Eastern Standard Time");
                sb.AppendLine("TZOFFSETFROM:-0400");
                sb.AppendLine("TZOFFSETTO:-0500");
                sb.AppendLine("END:STANDARD");
                sb.AppendLine("BEGIN:DAYLIGHT");
                sb.AppendLine("DTSTART:20070301T020000");
                sb.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3");
                sb.AppendLine("TZNAME:Eastern Daylight Time");
                sb.AppendLine("TZOFFSETFROM:-0500");
                sb.AppendLine("TZOFFSETTO:-0400");
                sb.AppendLine("END:DAYLIGHT");
                sb.AppendLine("END:VTIMEZONE");
                sb.AppendLine("BEGIN:VEVENT");
                sb.AppendLine("ATTENDEE;CN=Gavin Kendall;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CUTYPE=INDIVIDUAL;RSVP=TRUE:MAILTO:example_email_address@example_domain.com");
                sb.AppendLine("DESCRIPTION:");
                sb.AppendLine("DTEND;TZID=Eastern Standard Time:20170127T163000");
                sb.AppendLine("DTSTAMP:20170127T203051Z");
                sb.AppendLine("DTSTART;TZID=Eastern Standard Time:20170127T163000");
                sb.AppendLine("LAST-MODIFIED:20170126T203051Z");
                sb.AppendLine("LOCATION:");
                sb.AppendLine("ORGANIZER;CN=Gavin Kendall:MAILTO:example_email_address@example_domain.com");
                sb.AppendLine("SEQUENCE:0");
                sb.AppendLine("ACTION:DISPLAY");
                sb.AppendLine("SUMMARY:Nevermind");
                sb.AppendLine("UID:" + Guid.NewGuid().ToString());
                sb.AppendLine("END:VEVENT");
                sb.AppendLine("END:VCALENDAR");
    
                string filename = "event.ics";
    
                ContentType contentType = new ContentType("text/calendar");
                contentType.Parameters.Add("method", "REQUEST");
                contentType.Parameters.Add("component", "VEVENT");
                contentType.Parameters.Add("content-disposition", "inline; filename=" + filename);
    
                AlternateView calendarView = AlternateView.CreateAlternateViewFromString(sb.ToString(), contentType);
                calendarView.TransferEncoding = TransferEncoding.SevenBit;
    
                var mail = new MailMessage
                {
                    From = new MailAddress("example_email_address@example_domain.com", "Gavin Kendall"),
                    Subject = "Meeting Request",
                    Body = "Here's some body text for the Meeting Request. It's currently " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
                    BodyEncoding = System.Text.Encoding.UTF8,
                    IsBodyHtml = true
                };
                mail.To.Add(new MailAddress("example_email_address@example_domain.com", "Gavin Kendall"));
                mail.AlternateViews.Add(calendarView);
    
                SmtpClient client = new SmtpClient("host", 25);
                client.Send(mail);
    

    Any assistance is appreciated.

    Friday, January 27, 2017 3:24 PM

Answers

  • I managed to figure it out on my own and it's stupidly simple.

    It turns out that if you're both the organizer and the attendee (as I had it) Outlook for Mac gets clever and doesn't display the response options because I'm both the organizer and the attendee of the meeting invite. Once I started using another person's email address for the organizer the response options miraculously appeared in the meeting invite when viewed in Outlook for Mac.

    Monday, February 6, 2017 4:14 PM

All replies

  • Hello Gavin,

    Try to save the appointment (request) in the iCalendar format and see the difference between them.

    Do you see that when you create an appointment manually in Outlook?


    profile for Eugene Astafiev at Stack Overflow, Q&A for professional and enthusiast programmers

    Friday, January 27, 2017 3:31 PM
  • I did a diff comparison between my original *.ics data and what's being generated by Outlook for Windows and Outlook for Mac.

    The issue, unfortunately, still exists in Outlook for Mac even when introducing the lines that are included in an *.ics file saved from Outlook for Windows (where I simply had the event selected while looking at the Calendar and chose File -> Save As ... and then opened up the saved *.ics file in an editor).

    So here's my updated C# code whereby the new lines are indicated by "// new" and the changed lines are indicated by "// changed":

    StringBuilder sb = new StringBuilder();
                sb.AppendLine("BEGIN:VCALENDAR");
                sb.AppendLine("PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN"); // new
                sb.AppendLine("VERSION:2.0");
                sb.AppendLine("METHOD:REQUEST");
                sb.AppendLine("X-MS-OLK-FORCEINSPECTOROPEN:TRUE"); // new
                sb.AppendLine("BEGIN:VTIMEZONE");
                sb.AppendLine("TZID:Eastern Standard Time");
                sb.AppendLine("BEGIN:STANDARD");
                sb.AppendLine("DTSTART:20071102T020000");
                sb.AppendLine("RRULE:FREQ=YEARLY;BYDAY=1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=11");
                sb.AppendLine("TZNAME:Eastern Standard Time");
                sb.AppendLine("TZOFFSETFROM:-0400");
                sb.AppendLine("TZOFFSETTO:-0500");
                sb.AppendLine("END:STANDARD");
                sb.AppendLine("BEGIN:DAYLIGHT");
                sb.AppendLine("DTSTART:20070301T020000");
                sb.AppendLine("RRULE:FREQ=YEARLY;BYDAY=2SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3");
                sb.AppendLine("TZNAME:Eastern Daylight Time");
                sb.AppendLine("TZOFFSETFROM:-0500");
                sb.AppendLine("TZOFFSETTO:-0400");
                sb.AppendLine("END:DAYLIGHT");
                sb.AppendLine("END:VTIMEZONE");
                sb.AppendLine("BEGIN:VEVENT");
                sb.AppendLine("CLASS:PUBLIC"); // new
                sb.AppendLine("CREATED:20170127T154402Z"); // new
                sb.AppendLine("ATTENDEE;CN=Gavin Kendall;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CUTYPE=INDIVIDUAL;RSVP=TRUE:MAILTO:email@company.com");
                sb.AppendLine("DESCRIPTION:");
                sb.AppendLine("DTEND;TZID=Eastern Standard Time:20170130T123000");
                sb.AppendLine("DTSTAMP:20170130T203051Z");
                sb.AppendLine("DTSTART;TZID=Eastern Standard Time:20170130T120000");
                sb.AppendLine("LAST-MODIFIED:20170126T203051Z");
                sb.AppendLine("LOCATION:");
                sb.AppendLine("ORGANIZER;CN=Gavin Kendall:MAILTO:email@company.com");
                sb.AppendLine("PRIORITY: 5"); // new
                sb.AppendLine("SEQUENCE:0");
                sb.AppendLine("ACTION:DISPLAY");
                sb.AppendLine("SUMMARY;LANGUAGE=en-ca:Meeting Request"); // changed
                sb.AppendLine("TRANSP:OPAQUE"); // new
                sb.AppendLine("UID:" + Guid.NewGuid().ToString());
                sb.AppendLine("X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE"); // new
                sb.AppendLine("X-MICROSOFT-CDO-IMPORTANCE:1"); // new
                sb.AppendLine("X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY"); // new
                sb.AppendLine("BEGIN:VALARM"); // new
                sb.AppendLine("TRIGGER:-PT15M"); // new
                sb.AppendLine("ACTION:DISPLAY"); // new
                sb.AppendLine("DESCRIPTION:Reminder"); // new
                sb.AppendLine("END:VALARM"); // new
                sb.AppendLine("END:VEVENT");
                sb.AppendLine("END:VCALENDAR");
    
                string filename = "event.ics";
    
                ContentType contentType = new ContentType("text/calendar");
                contentType.Parameters.Add("method", "REQUEST");
                contentType.Parameters.Add("component", "VEVENT");
                contentType.Parameters.Add("content-disposition", "inline; filename=" + filename);
    
                AlternateView calendarView = AlternateView.CreateAlternateViewFromString(sb.ToString(), contentType);
                calendarView.TransferEncoding = TransferEncoding.SevenBit;
    
                var mail = new MailMessage
                {
                    From = new MailAddress("email@company.com", "Gavin Kendall"),
                    Subject = "Meeting Request",
                    Body = "Here's some body text for the Meeting Request. It's currently " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
                    BodyEncoding = System.Text.Encoding.UTF8,
                    IsBodyHtml = true
                };
                mail.To.Add(new MailAddress("email@company.com", "Gavin Kendall"));
                mail.AlternateViews.Add(calendarView);
    
                SmtpClient client = new SmtpClient("dev-spam-farm.igloosoftware.pvt", 25);
                client.Send(mail);

    The new lines are:

    PRODID:-//Microsoft Corporation//Outlook 16.0 MIMEDIR//EN
    X-MS-OLK-FORCEINSPECTOROPEN:TRUE
    CLASS:PUBLIC
    CREATED:20170127T154402Z
    PRIORITY: 5
    TRANSP:OPAQUE
    X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
    X-MICROSOFT-CDO-IMPORTANCE:1
    X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
    BEGIN:VALARM
    TRIGGER:-PT15M
    ACTION:DISPLAY
    DESCRIPTION:Reminder
    END:VALARM


    Here's a screenshot of the invitation request in Outlook for Windows:

    This is the same invitation request viewed in Outlook for Mac:

    The difference in the iCalendar data between Outlook for Windows ("windows.txt"), Outlook for Mac ("mac.txt"), and my original ("original.txt") are minimal:


    Friday, January 27, 2017 7:10 PM
  • Gavin,

    Are you able to reproduce the issue when sending appointment requests manually in Outlook?


    profile for Eugene Astafiev at Stack Overflow, Q&A for professional and enthusiast programmers

    Friday, January 27, 2017 8:21 PM
  • Hi,

    I do apologize that we don’t support Office for Mac.

    I would suggest you post on https://answers.microsoft.com/en-us/msoffice.

    Sorry for any inconvenience and have a nice day! 

    Regards,

    Celeste


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Tuesday, January 31, 2017 4:55 AM
    Moderator
  • I managed to figure it out on my own and it's stupidly simple.

    It turns out that if you're both the organizer and the attendee (as I had it) Outlook for Mac gets clever and doesn't display the response options because I'm both the organizer and the attendee of the meeting invite. Once I started using another person's email address for the organizer the response options miraculously appeared in the meeting invite when viewed in Outlook for Mac.

    Monday, February 6, 2017 4:14 PM
  • Hi,

    Thanks for sharing the information here and I suggest you mark it as answer, if others have similar issue, they could see your answer.

    Regards,

    Celeste


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Tuesday, February 7, 2017 2:39 AM
    Moderator