如何从Outlook.office365.com接收iCalendar(.ics或.ical)会议邀请,以便可以将其解析并添加到日历(如提醒+ wyrd)中?
我已经花了很长时间寻找答案,但是还没有找到答案,所以我想知道我是否只是缺少一些琐碎的东西。
我在Fedora 20(Heisenbug)上使用Mutt 1.5.22和OfflineIMAP 6.5.5。
有很多脚本可以将iCalendar消息解析为可以导入日历的格式。这不是我的问题。我的问题是我什至没有收到iCalendar消息,所以我没有什么可解析的。
会议邀请以base64编码的文本/ html消息的形式到达我的收件箱。它不是多部分消息,没有附件。邮件的正文包含指向Microsoft Outlook Web Access(OWA)的链接。跟随链接似乎没有任何作用,只能带我进入WebMail。电子邮件正文的其余部分包含会议邀请的描述。
我尝试转发邀请并以附件的形式转发邀请,但是这些都没有影响邮件的格式。
我检查了邮件的标头,但没有任何重要之处。我将它们复制到这里,以防它们对任何人都有意义:
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
我还检查了WebMail中邮件的标题。标头更多(有些与tnef相关),但似乎与日历或邀请无关。
我将“会议邀请”的标题与普通电子邮件的标题进行了比较。唯一的区别是普通电子邮件包含一个额外的标题:“ X-自动响应-抑制:DR,RN,NRN,OOF,自动回复”。
我的.offlineimaprc的folderfilter设置为不同步Calendar文件夹。这是因为每次OfflineIMAP尝试进行同步时,在同步Calendar文件夹时都会遇到相同错误的一百多个实例:“错误:IMAP服务器“远程”没有UID为“ [...]”的消息。”
使用Python的imaplib检查Calendar文件夹:
>>> import imaplib
>>> i = imaplib.IMAP4_SSL("outlook.office365.com", 993)
>>> i.login("NAME@COMPANY.com", "PASSWORD")
('OK', ['LOGIN completed.'])
>>> i.select("Calendar")
('OK', ['159'])
>>> i.fetch(159, "(RFC822)")
('OK', [None])
>>> i.fetch(159, "(RFC822)")
第二次调用fetch时,它返回一条消息:“服务器无法检索以下消息。该消息尚未删除。您可能可以使用Outlook或Outlook Web App查看它。也可以联系发件人找出消息中说的是什么。”
在WebMail中,我看到Calendar文件夹(可通过Calendar选项卡访问)具有组织外部可见性的权限。当前设置为“不共享”。其他选项是“仅限可用性”,“有限详细信息”或“完整详细信息”。将权限设置为“详细信息”,然后向自己发送会议邀请对会议邀请的格式没有任何影响。
作为不接收iCalendar消息的一种解决方法,我在Thunderbird中打开了Lightning插件。以某种方式,Lightning加载项知道如何接收会议邀请。消息仍显示为text / html,但是Thunderbird的状态栏中有一个链接。单击它会打开一个提示,询问是否拒绝或接受邀请。
任何人都有任何想法,为什么来自Outlook 365的会议邀请以简单的text / html消息而不是iCalendar消息到达?有什么我可以做的吗?如果Lightning加载项可以处理邀请,那么必须有解决方案,例如使用Microsoft Exchange Web Services(EWS)。如果解决方案需要我编写工具,那就这样吧。向正确方向的推动将不胜感激。