Como receber convites de reunião do iCalendar (.ics ou .ical) do outlook.office365.com, para que possam ser analisados e adicionados a um calendário (como lembrar + wyrd)?
Procurei uma resposta longa e árdua, mas não encontrei nenhuma, então me pergunto se estou perdendo algo realmente trivial.
Estou usando o Mutt 1.5.22 com o OfflineIMAP 6.5.5 no Fedora 20 (Heisenbug).
Existem muitos scripts disponíveis para analisar as mensagens do iCalendar em formatos que podem ser importados para calendários. Este não é o meu problema. Meu problema é que nem estou recebendo mensagens do iCalendar, portanto não tenho nada para analisar.
Um convite para reunião chega na minha caixa de entrada como uma mensagem de texto / html codificada em base64. É não uma mensagem concatenada e há sem anexos . O corpo da mensagem contém um link para o Microsoft Outlook Web Access (OWA). Seguir o link parece não fazer nada, exceto me levar ao WebMail. O restante do corpo do email contém a descrição do convite para a reunião.
Tentei encaminhar o convite e encaminhar o convite como anexo, mas nenhum deles afetou o formato da mensagem.
Inspecionei os cabeçalhos da mensagem, mas nada se destacou como importante. Eu os copiei aqui, caso eles signifiquem algo para alguém:
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
Eu também inspecionei os cabeçalhos da mensagem no WebMail. Havia mais cabeçalhos (alguns relacionados ao tnef), mas, novamente, nada parecia relacionado a calendários ou convites.
Comparei os cabeçalhos de um "convite para reunião" com os cabeçalhos de um email normal. A única diferença é que um email normal contém um cabeçalho extra: "X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply".
O filtro de pastas do meu .offlineimaprc está definido para não sincronizar a pasta Calendário. Isso ocorre porque toda vez que o OfflineIMAP tentava sincronizar, ocorria mais de cem instâncias do mesmo erro ao sincronizar a pasta Calendário: "ERRO: O servidor IMAP 'remoto' não tem uma mensagem com o UID '[...]' . "
Usando o imaplib do Python para inspecionar a pasta Calendário:
>>> 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)")
Na segunda vez em que chamo a busca, ele retorna uma mensagem: "O servidor não pôde recuperar a seguinte mensagem. A mensagem não foi excluída. Você pode visualizá-la usando o Outlook ou o Outlook Web App. Você também pode entrar em contato remetente para descobrir o que a mensagem diz ".
No WebMail, vejo que a pasta Calendário (acessível através da guia Calendário) tem permissões para visibilidade fora da organização . No momento, está definido como "Não compartilhado". Outras opções são "Somente disponibilidade", "Detalhes limitados" ou "Detalhes completos". Definir as permissões para "Detalhes completos" e depois enviar um convite para reunião para mim não teve efeito no formato do convite para reunião.
Como solução alternativa para não receber a mensagem do iCalendar, tenho o Thunderbird aberto com o complemento Lightning. De alguma forma, o complemento Lightning sabe como receber convites para reuniões. As mensagens ainda aparecem como texto / html, mas há um link na barra de status do Thunderbird. Clicar nele abre uma solicitação perguntando se deseja recusar ou aceitar o convite.
Alguém tem alguma idéia de por que os convites para reunião do Outlook 365 estão chegando como simples mensagens de texto / html em vez de mensagens do iCalendar? Há algo que eu possa fazer? Se o complemento Lightning puder funcionar com os convites, deve haver uma solução, como o uso do Microsoft Exchange Web Services (EWS). Se a solução exigir que eu codifique uma ferramenta, que assim seja. Um empurrão na direção certa seria muito apreciado.
Respostas:
Você pode configurá-lo para que o Office 365 / Outlook envie convites formatados no formato iCalendar pela interface da web.
Agora você deve receber todos os convites no formato iCalendar.
fonte
O link que o SEoF forneceu foi uma ótima sugestão. O post do blog está incompleto, na minha opinião, mas me ajudou a seguir o caminho certo. Pesquisei um pouco mais e criei uma lista completa de etapas para fazer o Office 365 me enviar convites para reuniões no formato iCalendar (.ics).
Observe que não sou administrador e não precisei entrar em contato com ninguém para me dar privilégios. A única ressalva é que você precisa acessar uma caixa do Windows. Depois de alterar as configurações pelo Windows, você pode voltar a usar o sistema operacional que estava usando antes. Fiz o seguinte sozinho como um usuário normal usando o Windows 7:
Agora, meu vira-lata no Linux está recuperando convites para reuniões no formato iCalendar (.ics).
fonte
Não é exatamente o que o OP pediu, mas se a lógica de terceiros for permitida, confira o fantástico exchangelib (python). Exemplo rápido de py3 de busca de eventos pelos próximos 3 meses (observe que os itens recorrentes foram estendidos):
fonte