Ich habe jetzt ein wenig herumprobiert und Rohdaten besorgt.
Mehrere Dinge.
Die “komische Formatierung” in O365 sieht so aus:
Ein Blick in den Quelltext erklärt das auch sehr schnell:
Text-Part vom Mail aus EGW:
Content-Type: text/plain; charset=utf-8; format=flowed; DelSp=Yes
On 06.04.2024, 14:32 K, Markus Zugesagt your meeting request for
10.04.2024, 20:00Details zum Termin:Kategorie: --Ort: Am Ort
1Startdatum/ -zeit: 10.04.2024, 20:00Enddatum /-zeit: 10.04.2024,
20:30Besitzer: K Ka Ka.K@example1.com
Aktualisiert: 06.04.2024, 14:32, K, MarkusTeilnehmer: K,
Markus (Zugesagt)*~*~*~*~*~*~*~*~*~*
Hier fehlen sichtlich einige Zeilenumbrüche, damit das schön lesbar wird.
HTML_Part vom Mail aus EGW:
Content-Type: text/html; charset=utf-8
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
On 06.04.2024, 14:32 K, Markus Zugesagt your meeting request for 10.04.2024, 20:00
Details zum Termin:
Kategorie: --
Ort: Am Ort 1
Startdatum/ -zeit: 10.04.2024, 20:00
Enddatum /-zeit: 10.04.2024, 20:30
Besitzer: K Ka <Ka.K@example1.com>
Aktualisiert: 06.04.2024, 14:32, K, Markus
Teilnehmer: K, Markus (Zugesagt)
*~*~*~*~*~*~*~*~*~*
</body>
</html>
Hier fehlt sämtliches HTML (<br>
,<p>
, etc) sodass das lesbar wird.
Wie im Screenshot auch ersichtlich ist, kann Microsoft mit dem Antwort-ICS nichts anfangen und erklärt es als “unsupported”.
EGW hat das gesendet:
Content-Type: text/calendar; charset=utf-8; method=REPLY
Content-Transfer-Encoding: 8bit
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//EGroupware//NONSGML EGroupware Calendar 23.1//DE
METHOD:REPLY
BEGIN:VTIMEZONE
TZID:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Einladung aus O365 (Annahme über EGW)
LOCATION:Am Ort 1
DTSTART;TZID=Europe/Berlin:20240410T200000
DTEND;TZID=Europe/Berlin:20240410T203000
ATTENDEE;CN=Markus
K;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL;RSVP=FALSE
;X-EGROUPWARE-UID=7:mailto:markus.K@example.com
ORGANIZER;CN=K Ka:mailto:Ka.K@example1.com
PRIORITY:5
UID:040000008200E00074C5B7101A82E00800000000DE947BD31888DA01000000000000000
01000000067F3A4F954B0F2418D084A2281247819
STATUS:CONFIRMED
CREATED:20240406T143239Z
LAST-MODIFIED:20240406T143239Z
DTSTAMP:20240406T123239Z
END:VEVENT
END:VCALENDAR
Zum Vergleich, habe ich den Test nochmals umgedreht und eine Einladung von EGW zu Microsoft gesendet und mir die Zusage, die von O365 kommt, rausgezogen.
Das kommt als base64 codierter Anhang und sieht nach dem Decoding so aus:
BEGIN:VCALENDAR
METHOD:REPLY
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:W. Europe Standard Time
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;PARTSTAT=ACCEPTED;CN=K Ka:mailto:ka.k@exam
ple1.com
COMMENT;LANGUAGE=de-DE:\n
UID:calendar-7886-2c58c4dc4fd4c15b9e0b7b31be77e20f
SUMMARY;LANGUAGE=de-DE:Angenommen: Einladung aus EGW an Outlook
DTSTART;TZID=W. Europe Standard Time:20240409T200000
DTEND;TZID=W. Europe Standard Time:20240409T210000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20240406T165241Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=de-DE:Der Ort
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-ATTENDANCE:NONE
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
X-MICROSOFT-ISRESPONSEREQUESTED:FALSE
END:VEVENT
END:VCALENDAR
Hinweis: Alle Namen wurden gekürzt und die echten Domains durch “example*.com” ersetzt.