EN 
06.12.2025 Mikuláš WELCOME IN MY WORLD

This website is originally written in the Czech language. Most content is machine (AI) translated into English. The translation may not be exact and may contain errors.

Tento článek si můžete zobrazit v originální české verzi. You can view this article in the original Czech version.
Exchange a Outlook kalendář - žádosti o schůzku

Exchange and Outlook calendar - appointment requests

| Petr Bouška - Samuraj |
I have solved different behavior of scheduling appointments to Outlook calendar (with an account on Exchange server) in different environments. I haven't figured out what is causing the problem, but I have gathered various information regarding the operation of events and appointments and the use of the iCalendar format. I will list these notes here, which unfortunately are not comprehensive. I have not found detailed information about the functioning and processing of meetings on the Exchange server side anywhere.
displayed: 19 370x (15 477 CZ, 3 893 EN) | Comments [4]

In the MS Outlook calendar, we can create events (Appointment) or meetings (Meeting Request). A meeting differs in that additional people - participants (Attendees) or resources (Resources) are invited. The person who creates it is the organizer.

Each event/meeting from the calendar can be saved as a message (msg), iCalendar format (ics) or vCalendar format (vcs). Just select it in the calendar and choose File - Save As in the menu, enter a name and the type you want to save it in. There's also an option when you open an event, where under Forward there is a Forward as iCalendar option.

Outlook - Save As calendar

Calendar Data Exchange Formats

vCalendar

The Internet Mail Consortium (IMC) created the vCalendar (VCS) file format for exchanging calendar data (often associated with the Microsoft Outlook program). It is a text file that starts with the identifier:

BEGIN:VCALENDAR
VERSION:1.0

iCalendar

Today, its successor, the iCalendar (ICS) format, described in RFC 5545 and addenda, is used. It is supported by many products, such as Google Calendar, Apple Calendar, and is also used by Microsoft Outlook, which has made some minor adjustments to it. The file begins with:

BEGIN:VCALENDAR
VERSION:2.0

Using the iCalendar format, we can save both an event and a meeting. A meeting contains (among many other parameters)

METHOD:REQUEST

One or more participants

ATTENDEE;CN="Bouška Petr";RSVP=TRUE:mailto:bouska@firma.cz

And possibly an organizer

ORGANIZER;CN="Bouška Petr":mailto:bouska@firma.cz

Sending Events

As an Email Attachment

We can send an event or meeting in the iCalendar format as an email attachment. It can be opened and the event can be saved to the calendar using Save & Close. For a meeting, we have buttons like Accept, Decline, etc., and the meeting is normally inserted into the calendar as *Tentative* upon processing.

Událost či schůzku jako přílohu emailu
iCalendar událost iCalendar žádost o schůzku

Automatic Processing of Meeting Requests

I'm not entirely clear on when exactly automatic processing of meeting requests occurs. Presumably, if the request is an attachment, it is processed when opened. If it's in the body of the message, it's processed upon arrival on the server.

We can turn on or off the processing (the details are not clear to me) in the settings of MS Outlook.

File - Options - Mail - Tracking - Automatically process meeting requests and responses to meeting requests and polls

But even if we have Outlook turned off, the event will be inserted into the calendar, so it's processing on the server. On the Exchange server, there are various settings, and for the user, we can list two values:

[PS] C:\>Get-CalendarProcessing uzivatel | FL AutomateProcessing
AutomateProcessing : AutoUpdate
[PS] C:\>Get-CalendarProcessing uzivatel | FL AddNewRequestsTentatively
AddNewRequestsTentatively : True

In the Message Body

The second option is that the meeting is inserted directly in the message (for an event, it probably doesn't work - a strange message comes that we can open, and then it behaves normally). In this way, the invitation is sent when created in Outlook, and the recipient sees a special message (no email icon, but a calendar meeting), where we have the Accept, Decline buttons and a preview of the calendar.

iCalendar žádost o schůzku v těle emailu

When we want to send an iCalendar file in the body of the email, we can't do it manually (e.g., in Outlook). It can be done programmatically. The message is sent using the extended MIME (Multipurpose Internet Mail Extensions) format. We specify parameters in the header MIME-Version: 1.0. It can contain multiple parts Content-Type: multipart/alternative; and has the Content-class: urn:content-classes:calendarmessage attribute set. In the body of the message (as one part) is the content of the ICS file with the parameters Content-Type: text/calendar; name="meeting.ics"; method=REQUEST; Content-Transfer-Encoding: 8bit.

Sending a Meeting Request using a Script

Using PHP

I first wanted to use PHP, where I expected creating a script would be straightforward. But I still couldn't get it to work, even with various guides on the internet, such as Sending Outlook/Email Calendar Events with PHP.

I'm not sure if I have an error in the correct setting of the MIME message parameters or in the content of the iCalendar file. The result was always a message that had an attachment named not supported calendar message.ics. This attachment could be opened normally, and the invitation was functional.

iCalendar not supported calendar message.ics

Note: In any case, Outlook/Exchange is quite sensitive to the ICS file format, and many things can cause us problems. For example, when sending successfully, when I had the ORGANIZER parameter only with the email and no CN, the invitation also came as an attachment.

Using Perl

I found an interesting article with a Perl script, and I was able to get it working quickly. It's Exchange compatible iCal invitations. What I needed to do to get it running on Windows:

  • download and install ActivePerl, I used the file ActivePerl-5.22.0.2200-MSWin32-x86-64int-299195.msi
  • download Email-Date-Format-1.005.tar.gz and MIME-Lite-3.030.tar.gz and extract the lib folders with their contents into the Perl installation (standard c:\Perl), adding two required libraries
  • save the Perl script to a file, e.g. ical.pl, and a test iCalendar to subject.ics
  • call the script from the command line in the directory where the script is saved, d:\>perl ical.pl

The used script ical.pl is from the website mentioned above (you need to change the From, To, and mail server address):

#!/usr/bin/perl -w

use strict;
use MIME::Lite;
my $msg = MIME::Lite->new(
  From    =>'organizator@firma.cz',
  To      =>'ucastnik@firma.cz',
  Subject =>'Test iCalendar',
  Type    =>'multipart/alternative'
);
$msg->attr(
  'content-class' => 'urn:content-classes:calendarmessage'
);
$msg->attach(
  Type => "TEXT",
  Data => "Test iCal"
);
my $part = MIME::Lite->new(
  Type=> "text/calendar; method=REQUEST; name=\"subject.ics\"",
  Filename    => "subject.ics",
  Path=> "subject.ics",
  Encoding    => "8bit",
);
$part->scrub(['date', 'x-mailer', 'mime-version']);
  $part->attr(
  'content-class' => 'urn:content-classes:calendarmessage',
  'content-description' => "subject.ics",
);
$part->replace(
  'content-disposition' => "",
);
$msg->attach($part);
$msg->send('smtp','IP.adresa.mail.serveru', Debug=>1);

We can create the actual invitation in Outlook and save it, then the text file can be edited easily. Example subject.ics file (at least the Attendee needs to be changed):

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VTIMEZONE
TZID:Central Europe Standard Time
BEGIN:STANDARD
DTSTART:16011028T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010325T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;CN="Ucastnik";RSVP=TRUE:mailto:ucastnik@firma.cz
CLASS:PUBLIC
CREATED:20151022T131746Z
DESCRIPTION:Schuzka
DTEND;TZID="Central Europe Standard Time":20151023T235900
DTSTAMP:20151022T101820Z
DTSTART;TZID="Central Europe Standard Time":20151023T000000
LAST-MODIFIED:20151022T131746Z
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=cs:Schuzka
TRANSP:OPAQUE
UID:ok2015102300000020151023000000
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INTENDEDSTATUS:OOF
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MS-OLK-AUTOFILLLOCATION:TRUE
X-MS-OLK-AUTOSTARTCHECK:FALSE
X-MS-OLK-CONFTYPE:0
END:VEVENT
END:VCALENDAR

Different Scenarios for Meeting Requests

I dealt with the situation where an application is sending some event to the calendar. I couldn't find anywhere what the correct way should be. A simple method is to send the ICS file for the event in an attachment. The user opens the attachment, saves it, and has the event in the calendar. Everything is simple and works. But the problem is when we need some information to appear in the calendar, even if the user doesn't open the mail for a week.

In such a case, a meeting invitation sent in the body of the message is suitable. The server will process it immediately upon receipt and normally insert it into the user's calendar. When the user opens the message, they have the option to choose Accept and thereby confirm the meeting. But now the question arises, who should be the meeting organizer in such a case, in other words, from what address should the request come. Because the response (e.g., when accepting) is sent to that address. We can use a non-existent address, but that will cause errors. Some artificial mailbox where the messages will accumulate. In both cases, this address will also be visible for the meeting. The last option is to use the recipient's address. But this may not be the right solution, as occasionally there is a problem (see below).

Setting the Organizer and Participant

It's interesting to see the behavior in Outlook when the sender's email address is combined with the parameters in the ICS file (ORGANIZER, ATTENDEE). If the ORGANIZER parameter is not specified, the email sender is used. If the sender is different from the ORGANIZER, I've read on the internet that such an invitation doesn't work (it comes as an attachment). But it works for me, and Outlook shows the person from ORGANIZER as the sender (only the email header shows that it was sent by someone else).

Meeting Where I'm the Organizer and Participant

If I create a meeting in the Outlook calendar and invite myself as a participant, the incoming email immediately ends up in the deleted items and we see the information that we are the organizer.

As the meeting organizer, you do not need to respond to the meeting.
Schůzka, kde jsem organizátor i účastník

If I create an ICS file where I set myself as the ORGANIZER, when opened, it also states that I am the organizer and I don't have the buttons available to accept the meeting. However, if I send such an ICS file, for example using a Perl script, in the body of the email, everything works. I can accept the invitation and it is inserted into my calendar. This functionality works in a number of environments where I tested it with Exchange Server 2010 and 2013. But in one infrastructure with Exchange Server 2013, it doesn't work, and the email ends up in the trash. I couldn't figure out what's causing this behavior.

Author:

Related articles:

Microsoft Exchange

Almost since the beginning of my practice, I have been involved in the administration of the Microsoft mail server, i.e. Exchange Server. I started with the 2003 version and worked my way up to Exchange Online. The articles cover many areas of management. Most since the migration to Exchange Server 2016 and its complete configuration. But also Exchange Hybrid and e-mail security.

Outlook

Articles related to the mail client from Microsoft. Starting with Outlook 2003, through Outlook 2007, the current Outlook 2010 and certainly beyond in the future.

If you want write something about this article use comments.

Comments
  1. [1] Jakub

    Jedna z věci co není zmíněna je standard CardDAV a CalDAV pro výměnu kontaktů a kalendářů. Bohužel není podporován přímo Outlookem a je nutno využít nějakou jinou aplikaci (například EVO Collaborator) pro přidání této funkce, která pak dovoluje synchronizaci například s Gmailem, iCloud a jinými.

    Tuesday, 16.02.2016 10:33 | answer
  2. [2] Milos Kucera

    Zdravim,

    rad bych se optal, zda jste se nekdy setkal s problemem samovolne odesilanych pozvanek do kalendare (Outlook). Ted poprve v zivote se mi to stalo a odesila se to pomerne hodne a jednatel firmy, kam to chodi, uz je dost nervozni. Nasi IT se s tim nikde nesetkali. Z kalendare jsem tento invitation natvrdo smazal a od vcerejsiho vecera se to odeslalo uz opet 15x ... zadny reminder nastaveny nemam a je to jediny email, na ktery se to odesila, nikomu jinemu ne.

    Moc diky za jakekoliv vstupy i odpoved na email milos.kucera@cz.abb.com

    Pekny den preji

    Milos kucera

    Saturday, 14.05.2016 08:14 | answer
  3. [3] Marie

    Dobrý den mám dotaz jak potvrdím učast schůzky meetingu třeba ?

    Sunday, 12.06.2016 12:45 | answer
  4. [4] petr masek

    respond to [1]Jakub: Diky za info. Vyzkousel jsem a funguje super - pouzivam na synchronizaci firemního kalendare v Kerio se soukromym Google kalendářem. Pokud by někdo hledal jak nastavit, tak info jsem nasel třeba zde http://pocitace-a-internet.blogspot.com/2015/03/synchronizace-kontaktu-kalendare-gmailu.html

    Tuesday, 23.08.2016 10:38 | answer
Add comment

Insert tag: strong em link

Help:
  • maximum length of comment is 2000 characters
  • HTML tags are not allowed (they will be removed), you can use only the special tags listed above the input field
  • new line (ENTER) ends paragraph and start new one
  • when you respond to a comment, put the original comment number in squar brackets at the beginning of the paragraph (line)