如果我没记错的话,我需要能够通过 vCalendar 对象为 Outlook 提供“可下载”事件。
根据我所做的研究,我一直在使用vObject。我查看了他们的使用示例,但之前没有使用该格式的经验,我不清楚如何解决我的问题,因为我不确定哪些字段可用,或者它们被称为什么......
是否有一个简单的示例来创建一个非常简单的对象/vCalendar 事件,该事件具有某种类型的名称/描述,具有开始和结束时间/日期?
我将使用 Django,并且可能会根据要求动态创建这些用于“下载”。
我认为最有用的领域是:
dtstart
: 开始时间dtend
: 时间结束summary
location
url
description
然后你创建一个日历:
cal = vobject.iCalendar()
然后是一个事件:
event = cal.add('vevent')
并填充它:
event.add('summary').value = 'your summary'
event.add('dtstart').value = datetime.now() # or anything else
...
现在如果你想通过 http 返回日历,你可以使用cal.serialize()
.
Outlook 2003 似乎需要每个 VEVENT 的 UID 字段。icalendar 模块似乎没有使用这些,所以我不得不添加以下代码片段:
import uuid
...
event.add('uid',uuid.uuid4())
我在 Windows 系统上遇到了同样的问题。一旦我用 lfs 替换 crlfs,事情就开始为我工作了。
output = cal.serialize().replace(u'\r\n', u'\n' ).strip()