我们正在开发一个asp.net 2.0网络应用程序,通过电子邮件向用户发送电子邮件以保存到他们的Outlook 2003日历中。我们注意到,即使ical 2.0规范支持,也没有任何更新或删除项目的代码似乎都能正常工作。我们很好奇Outlook 2003是否忽略了这一点? Outlook 2007的行为有何不同?
我们遇到一个事件可能会发生变化或被取消而触发电子邮件通知的情况,但更新后的ical只会添加一个新事件,它会删除和/或移动原始事件....
我们错过了什么吗?
答案 0 :(得分:1)
我们已经能够让它现在删除一条消息....但不会更新我们认为的方式....
设置我们发送的会议......
BEGIN:VCALENDAR 版本:2.0 方法:发布 BEGIN:VEVENT 类:public 优先级:5 顺序:0 UID:12345 摘要:测试 位置:测试 DTSTART:20090709T230000Z DTEND:20090710T000000Z DTSTAMP:20090713T164634Z 说明:测试 END:VEVENT END:VCALENDAR
要删除我们只需更改方法即可发送消息,如下所示:
BEGIN:VCALENDAR 版本:2.0 方法:取消 BEGIN:VEVENT 类:public 优先级:5 顺序:0 UID:12345 摘要:测试 位置:测试 DTSTART:20090709T230000Z DTEND:20090710T000000Z DTSTAMP:20090713T164634Z 说明:测试 END:VEVENT END:VCALENDAR
我们删除的原始问题是我们有一个空白的组织者线。我们删除了它并取消了工作......
至于更新第一行中的原始发布,我们无法做到。我们将序列#从零增加到1,它只是添加了一个新的会议。我们使用的是相同的UID号码,在我们的测试中只有12345。
我发现这样做的唯一方法是创建一个组织器并从发布更改为请求类型。
在阅读rfc2445时,这似乎是它的设计方式。发布将始终创建新记录,序列无关紧要。当序列问题与组织者和请求方法有关时......
我在测试和阅读stackoverflow之后也找到了这个答案: ICalendar and event updates not working in Outlook
Duh让我没有早点看到......:)
以下是一个示例:
BEGIN:VCALENDAR 版本:2.0 方法:REQUEST BEGIN:VEVENT 类:public DTEND:20090713T203000Z DTSTAMP:20090713T174434Z DTSTART:20090713T200000Z ORGANIZER; CN =“没人特别”; mailto:dontemailme@email.com 优先级:5 顺序:0 摘要:午餐? UID:1234567 END:VEVENT END:VCALENDAR
并更新它......
BEGIN:VCALENDAR 版本:2.0 方法:REQUEST BEGIN:VEVENT 类:public DTEND:20090713T213000Z DTSTAMP:20090713T174434Z DTSTART:20090713T210000Z ORGANIZER; CN =“没人特别”; mailto:dontemailme@email.com 优先级:5 顺序:1 摘要:午餐? UID:1234567 END:VEVENT END:VCALENDAR
取消它......
BEGIN:VCALENDAR 版本:2.0 方法:取消 BEGIN:VEVENT 类:public DTEND:20090713T213000Z DTSTAMP:20090713T174434Z DTSTART:20090713T210000Z ORGANIZER; CN =“没人特别”; mailto:dontemailme@email.com 优先级:5 顺序:1 摘要:午餐? UID:1234567 END:VEVENT END:VCALENDAR
序列#对取消无关紧要......
答案 1 :(得分:0)
我不得不说我对Outlook 2007的体验与Outlook 2003的体验相同..它完全忽略了PUBLISH ..
我遇到这种情况的最佳方式是将会议作为附件使用..这样你就可以打开它,“让它成为你自己的”,并利用跟踪并向与会者发送更新......
我不认为微软有兴趣在这里玩好标准..