关于不可知的语言:日历和事件更新在Outlook中不起作用

关于不可知的语言:日历和事件更新在Outlook中不起作用

ICalendar and event updates not working in Outlook

我正在生成ICalendar(.ics)文件。

使用UID和SEQUENCE字段,我可以更新Google日历和Windows日历中的现有事件,但不能在MS Outlook 2007中更新-它只是创建第二个事件

如何使它们在Outlook中工作?

谢谢

汤姆


我继续进行一些测试,现在设法使Outlook根据.cs文件更新和取消事件。

Outlook实际上似乎响应RFC 2446中定义的规则

总之,您必须指定

METHOD:REQUESTORGANIZER:xxxxxxxx

除了UID:和SEQUENCE:

要取消,您必须指定METHOD:CANCEL

请求/更新示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:REQUEST
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:5
DTSTAMP:20081106T154911Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
DTEND:20081115T170000
SUMMARY:TestTraining
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

取消示例;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:CANCEL
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:7
DTSTAMP:20081106T154916Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
SUMMARY:TestTraining
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR

我抓住了问问者汤姆·卡特(Tom Carter)。他有一个可行的示例,其中有一个请求,然后被取消。我不对的是,我的METHOD应该在VEVENT内,而应该在外面。因此,这是一个有效的更新!

原版的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

更新:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

我所做的只是添加了request方法(在正确的位置!)和一个组织器。


我使用的是Outlook 2003(从阅读帖子中可以看到,2007的行为方式相同),您需要清楚地区分ics文件的显式文件导入和双击ics文件时的隐式导入之间的行为。 '。

在Outlook菜单上的"文件/导入和导出..."上,Outlook将加载与文件中一样多的VEVENT条目,并且不会更改任何数量的UID:,SEQUENCE:或DTSTAMP:值会更改此值,即,如果更改任何数据并重新导入它,您将获得一组重复的条目。

如果双击ics文件,它将仅处理第一个VEVENT条目。但是,它确实可以识别UID,并且如果DTSTAMP:之后(SEQUENCE可以相同,但不能更低),则会提示您,并且它将更新日历中的事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.membership-services.net
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20090126T210000
DTEND:20090126T220000
SUMMARY:Avondale - Thameside Away Game vs Croydon
LOCATION:Whitgift School
DESCRIPTION:http://maps.google.co.uk/maps?f=q&hl=en&geocode=&q=CR2+6YT
UID:AWPC_8
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
BEGIN:VEVENT
DTSTART:20090202T213000
DTEND:20090202T223000
SUMMARY:Avondale - Thameside Home Game vs Orcas
LOCATION:Putney
DESCRIPTION:http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&ie=UTF8&ll=51.4635,-0.2285&spn=0.005,0.009613&t=h&z=17&iwloc=lyrftr:w2t.90,0x48760f04a04b1801:0x49ebf12503a5d5a9,51.463459,-0.228674
UID:AWPC_10
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
END:VCALENDAR

将此添加到您的ICS文件

1
X-WR-RELCALID:MyCal123

其中MyCal123是您日历的唯一标识符。

通过将此行添加到ICS文件中,整个日历将得到更新(在Outlook中出现提示后)。您甚至不需要更改DTSTAMP或SEQUENCE或ORGANIZER,并且METHOD:PUBLISH可以进行更新。只需更新事件详细信息,双击ICS,日历就会更新。请注意,如果您已发布日历并提供了供人们查看日历的URL,则此方法也很好用。他们只需要在2分钟后点击刷新,他们也会获得更新。

感谢David Bj?rnhart指出:ICal导入会在打开ics文件时创建新日历


我正在使用Entourage,因此这可能与您所看到的行为不完全匹配,但我希望它能对您有所帮助。

使用您回复中的iCalendar,Entourage甚至不会导入数据。使用已知良好的文件,我将其导入,然后成功更新。比较这两个文件,唯一的结构差异如下:

  • 我的已知商品没有VERSION元素
  • 我的已知商品没有PRODID元素
  • 我的已知商品没有STATUS元素
  • 我的已知商品没有SEQUENCE元素

由于Microsoft对开放标准的支持趋于落后,因此建议您尝试不使用VERSION信息。


推荐阅读

    linux命令移除文件夹?

    linux命令移除文件夹?,命令,文件夹,通用,不了,数据,名称,档案,系统,文件,目

    linux命令是什么语言?

    linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,

    linux分隔文件命令?

    linux分隔文件命令?,系统,信息,文件,命令,位置,指令,文件夹,目录,前缀,方法,l

    linux改文件权限命令?

    linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,

    linux命令交换文件名?

    linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,

    linux提取字段串命令?

    linux提取字段串命令?,数字,字符串,状态,工具,命令,文件,范本,样式,正则,字

    linux文件夹转移命令?

    linux文件夹转移命令?,系统,文件,命令,位置,材料,信息,工具,电脑,目录,源文

    linux转移文件命令?

    linux转移文件命令?,文件,命令,密码,电脑,位置,名称,信息,系统,目录,目标,lin

    linux下替换文件命令?

    linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内

    linux文件nl命令?

    linux文件nl命令?,地址,工作,信息,系统,情况,标准,实时,对比,百度,命令,linux

    linux寻找文件夹命令?

    linux寻找文件夹命令?,名称,命令,文件,位置,工作,标准,目录,子目录,文件名,

    linux跳到文件尾命令?

    linux跳到文件尾命令?,系统,文件,命令,管理,状态,实时,末尾,光标,内容,编辑,l

    linux改语言命令行?

    linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,lin

    linux把文件复制命令?

    linux把文件复制命令?,名字,文件,软件,系统,位置,目录,命令,源文件,目标,文

    linux命令行c语言?

    linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linu

    c语言在linux命令?

    c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linu

    linux文件夹合并命令?

    linux文件夹合并命令?,文件,对比,第一,下来,命令,文件夹,两个,字段,内容,数

    linux下文件创建命令?

    linux下文件创建命令?,名字,名称,首次,命令,文件,系统,密码,文件名,文件夹,

    linux命令行安装文件?

    linux命令行安装文件?,软件,官网,密码,中心,电脑,文件,命令,终端,指令,版本,L