Wie erhalte ich Einladungen zu iCalendar-Besprechungen (.ics oder .ical) von Outlook.office365.com, damit sie analysiert und einem Kalender hinzugefügt werden können (z. B. erinnern + wyrd)?
Ich habe lange und intensiv nach einer Antwort gesucht, aber keine gefunden. Ich frage mich, ob mir nur etwas wirklich Triviales fehlt.
Ich verwende Mutt 1.5.22 mit OfflineIMAP 6.5.5 unter Fedora 20 (Heisenbug).
Es gibt viele Skripte zum Parsen von iCalendar-Nachrichten in Formate, die in Kalender importiert werden können. Das ist nicht mein Problem. Mein Problem ist, dass ich nicht einmal iCalendar-Nachrichten erhalte, sodass ich nichts zu analysieren habe.
Eine Besprechungseinladung kommt als base64-codierte Text- / HTML-Nachricht in meinem Posteingang an. Es ist keine mehrteilige Nachricht und es gibt keine Anhänge . Der Nachrichtentext enthält einen Link zu Microsoft Outlook Web Access (OWA). Das Folgen des Links scheint nichts anderes zu tun, als mich zu WebMail zu bringen. Der Rest des E-Mail-Textes enthält die Beschreibung der Besprechungseinladung.
Ich habe versucht, die Einladung weiterzuleiten und die Einladung als Anhang weiterzuleiten, aber keines davon hat das Format der Nachricht beeinflusst.
Ich habe die Überschriften der Nachricht überprüft, aber nichts war wichtig. Ich habe sie hier kopiert, falls sie jemandem etwas bedeuten:
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...] via Mailbox Transport; [timestamp]
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...]; [timestamp]
Received: from [...] by [...] with Microsoft SMTP Server (TLS) id
[...]; [timestamp]
Received: from [...] by [...] with mapi id [...]; [timestamp]
From: [meeting organiser]
To: [meeting attendees]
Subject: [meeting subject]
Thread-Topic: [meeting subject]
Thread-Index: [...]
Sender: [sender on behalf of meeting organiser]
Date: [timestamp]
Message-ID: <[...]>
Accept-Language: en-US
Content-Language: en-US
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 03
X-MS-Exchange-Organization-AuthSource: [...]
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Ich habe auch die Header der Nachricht in WebMail überprüft. Es gab mehr Überschriften (einige bezogen sich auf tnef), aber auch hier schien nichts mit Kalendern oder Einladungen zu tun zu haben.
Ich habe die Überschriften einer "Besprechungseinladung" mit den Überschriften einer normalen E-Mail verglichen. Der einzige Unterschied bestand darin, dass eine normale E-Mail einen zusätzlichen Header enthält: "X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply".
Der Ordnerfilter von .offlineimaprc ist so eingestellt, dass der Kalenderordner nicht synchronisiert wird. Dies liegt daran, dass jedes Mal, wenn OfflineIMAP versucht hat, eine Synchronisierung durchzuführen, beim Synchronisieren des Kalenderordners mehr als hundert Instanzen desselben Fehlers auftreten: "FEHLER: IMAP-Server 'remote' hat keine Nachricht mit der UID '[...]' . "
Verwenden von Pythons imaplib zum Überprüfen des Kalenderordners:
>>> import imaplib
>>> i = imaplib.IMAP4_SSL("outlook.office365.com", 993)
>>> i.login("[email protected]", "PASSWORD")
('OK', ['LOGIN completed.'])
>>> i.select("Calendar")
('OK', ['159'])
>>> i.fetch(159, "(RFC822)")
('OK', [None])
>>> i.fetch(159, "(RFC822)")
Wenn ich zum zweiten Mal fetch aufrufe, wird eine Nachricht zurückgegeben: "Der Server konnte die folgende Nachricht nicht abrufen. Die Nachricht wurde nicht gelöscht. Möglicherweise können Sie sie entweder mit Outlook oder Outlook Web App anzeigen. Sie können auch Kontakt aufnehmen der Absender, um herauszufinden, was die Nachricht sagt. "
In WebMail sehe ich, dass der Kalenderordner (über die Registerkarte Kalender zugänglich) über Berechtigungen für die Sichtbarkeit außerhalb der Organisation verfügt . Es ist derzeit auf "Nicht freigegeben" eingestellt. Andere Optionen sind "Nur Verfügbarkeit", "Eingeschränkte Details" oder "Vollständige Details". Das Festlegen der Berechtigungen auf "Vollständige Details" und das anschließende Senden einer Besprechungseinladung an mich selbst hatte keine Auswirkungen auf das Format der Besprechungseinladung.
Um dieses Problem zu umgehen, wenn keine iCalendar-Nachricht empfangen wird, ist Thunderbird mit dem Lightning-Add-On geöffnet. Irgendwie weiß das Lightning-Add-On, wie man Besprechungseinladungen empfängt. Die Nachrichten werden weiterhin als Text / HTML angezeigt, aber in der Statusleiste von Thunderbird befindet sich ein Link. Wenn Sie darauf klicken, werden Sie gefragt, ob Sie die Einladung ablehnen oder annehmen möchten.
Hat jemand eine Idee, warum Besprechungseinladungen aus Outlook 365 als einfache Text- / HTML-Nachrichten und nicht als iCalendar-Nachrichten ankommen? Kann ich irgendetwas tun? Wenn das Lightning-Add-On mit den Einladungen arbeiten kann, muss es eine Lösung geben, z. B. die Verwendung von Microsoft Exchange Web Services (EWS). Wenn ich für die Lösung ein Tool codieren muss, soll es so sein. Ein Vorstoß in die richtige Richtung wäre sehr dankbar.
Antworten:
Sie können festlegen, dass Office 365 / Outlook Einladungen im iCalendar-Format über die Weboberfläche sendet.
Sie sollten jetzt alle Einladungen im iCalendar-Format erhalten.
quelle
Der von SEoF bereitgestellte Link war ein großartiger Vorschlag. Der Blog-Beitrag ist meiner Meinung nach unvollständig, hat mich aber auf den richtigen Weg gebracht. Ich habe noch ein bisschen gegraben und eine vollständige Liste der Schritte erstellt, mit denen Office 365 mir Besprechungseinladungen im iCalendar-Format (.ics) senden kann.
Beachten Sie, dass ich kein Administrator bin und niemanden kontaktieren musste, um mir Berechtigungen zu erteilen. Die einzige Einschränkung ist, dass Sie Zugriff auf eine Windows-Box benötigen. Sobald Sie die Einstellungen über Windows geändert haben, können Sie wieder das Betriebssystem verwenden, das Sie zuvor verwendet haben. Ich habe als normaler Benutzer unter Windows 7 Folgendes alleine gemacht:
Jetzt ruft mein Köter unter Linux Besprechungseinladungen im iCalendar-Format (.ics) ab.
quelle
Nicht genau das, was OP gefragt hat, aber wenn Logik von Drittanbietern erlaubt ist, dann schauen Sie sich die fantastische Exchangeangelib (Python) an. Schnelles py3-Beispiel für das Abrufen von Ereignissen für die nächsten 3 Monate (beachten Sie, dass wiederkehrende Elemente erweitert wurden):
quelle