Jak odbierać zaproszenia na spotkania w programie iCalendar (.ics lub .ical) z witryny outlook.office365.com, aby można je było przeanalizować i dodać do kalendarza (np. Przypomnienie + wyrd)?
Długo i ciężko szukałem odpowiedzi, ale nie znalazłem żadnej, więc zastanawiam się, czy brakuje mi czegoś naprawdę trywialnego.
Używam Mutt 1.5.22 z OfflineIMAP 6.5.5 na Fedorze 20 (Heisenbug).
Istnieje wiele skryptów do parsowania wiadomości iCalendar w formatach, które można importować do kalendarzy. To nie jest mój problem. Mój problem polega na tym, że nawet nie otrzymuję wiadomości iCalendar, więc nie mam nic do przeanalizowania.
Zaproszenie na spotkanie pojawia się w mojej skrzynce odbiorczej jako wiadomość tekstowa / HTML w formacie base64. To nie jest wiadomość wieloczęściowa i nie ma żadnych załączników . Treść wiadomości zawiera łącze do programu Microsoft Outlook Web Access (OWA). Podążanie za linkiem wydaje się nie robić nic poza zabraniem mnie do WebMaila. Pozostała część wiadomości e-mail zawiera opis zaproszenia na spotkanie.
Próbowałem przekazać zaproszenie i przekazać zaproszenie jako załącznik, ale żaden z nich nie wpłynął na format wiadomości.
Przejrzałem nagłówki wiadomości, ale nic nie wyróżniało się jako ważne. Skopiowałem je tutaj, na wypadek, gdyby ktoś coś dla nich znaczył:
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
Sprawdziłem również nagłówki wiadomości w WebMail. Było więcej nagłówków (niektóre związane z tnef), ale znowu nic nie wydawało się związane z kalendarzami lub zaproszeniami.
Porównałem nagłówki „zaproszenia na spotkanie” z nagłówkami zwykłego e-maila. Jedyną różnicą było to, że zwykły e-mail zawiera dodatkowy nagłówek: „X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply”.
Mój folder .offlineimaprc jest ustawiony tak, aby nie synchronizować folderu Kalendarz. Dzieje się tak, ponieważ za każdym razem, gdy OfflineIMAP próbuje synchronizować, napotyka na ponad sto przypadków tego samego błędu podczas synchronizacji folderu Kalendarza: „BŁĄD:„ Zdalny ”serwer IMAP nie ma komunikatu o UID„ [...] ” . ”
Korzystanie z imaplib Pythona do sprawdzania folderu Kalendarz:
>>> 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)")
Przy drugim wywołaniu funkcji pobierania zwraca komunikat: „Serwer nie mógł pobrać następującej wiadomości. Wiadomość nie została usunięta. Możesz ją wyświetlić za pomocą aplikacji Outlook lub Outlook Web App. Możesz również skontaktować się z nadawcy, aby dowiedzieć się, co mówi wiadomość ”.
W WebMail widzę, że folder Kalendarz (dostępny na karcie Kalendarz) ma uprawnienia do widoczności poza organizacją . Obecnie jest ustawiony na „Nieudostępniony”. Inne opcje to „Tylko dostępność”, „Ograniczone szczegóły” lub „Pełne szczegóły”. Ustawienie uprawnień na „Pełne szczegóły”, a następnie wysłanie do siebie zaproszenia na spotkanie nie miało żadnego wpływu na format zaproszenia na spotkanie.
Aby obejść problem z nie otrzymywaniem wiadomości iCalendar, mam Thunderbirda otwarty z dodatkiem Lightning. W jakiś sposób dodatek Lightning wie, jak odbierać zaproszenia na spotkania. Wiadomości nadal są wyświetlane jako tekst / HTML, ale na pasku stanu Thunderbirda znajduje się link. Kliknięcie tego przycisku powoduje wyświetlenie monitu o odrzucenie lub zaakceptowanie zaproszenia.
Czy ktoś ma jakieś pomysły, dlaczego zaproszenia na spotkania z programu Outlook 365 przybywają jako zwykłe wiadomości tekstowe / HTML zamiast wiadomości iCalendar? Czy jest coś, co mogę zrobić? Jeśli dodatek Lightning może współpracować z zaproszeniami, musi istnieć rozwiązanie, takie jak korzystanie z usług Microsoft Exchange Web Services (EWS). Jeśli rozwiązanie będzie wymagać ode mnie zaprogramowania narzędzia, niech tak będzie. Popchnięcie we właściwym kierunku byłoby bardzo mile widziane.
Odpowiedzi:
Możesz to ustawić tak, aby Office 365 / Outlook wysyłał zaproszenia sformatowane w formacie iCalendar za pośrednictwem interfejsu internetowego.
Powinieneś teraz otrzymać wszystkie zaproszenia w formacie iCalendar.
źródło
Link podany przez SEoF był świetną sugestią. Moim zdaniem post na blogu jest niekompletny, ale pomógł mi rozpocząć właściwą drogę. Zrobiłem trochę więcej kopania i wymyśliłem pełną listę kroków, aby Office 365 wysłał mi zaproszenia na spotkania w formacie iCalendar (.ics).
Pamiętaj, że nie jestem administratorem i nie musiałem się z nikim kontaktować, aby dać mi jakiekolwiek uprawnienia. Jedynym zastrzeżeniem jest to, że potrzebujesz dostępu do okna systemu Windows. Po zmianie ustawień za pomocą systemu Windows możesz wrócić do korzystania z systemu operacyjnego, z którego korzystałeś wcześniej. Wykonałem następujące czynności jako zwykły użytkownik systemu Windows 7:
Teraz mój kundel w systemie Linux pobiera zaproszenia na spotkania w formacie iCalendar (.ics).
źródło
Nie do końca to, o co prosi OP, ale jeśli dozwolona jest logika innej firmy, to sprawdź fantastyczny exchangeangelibib (python). Szybki przykład pobierania zdarzeń przez py3 na następne 3 miesiące (zauważ, że powtarzające się elementy zostały przedłużone):
źródło