Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何创建一个.ICS文件,其中包含多个要导入现有Outlook日历的VEVENT_Asp.net_Outlook_Calendar_Icalendar - Fatal编程技术网

Asp.net 如何创建一个.ICS文件,其中包含多个要导入现有Outlook日历的VEVENT

Asp.net 如何创建一个.ICS文件,其中包含多个要导入现有Outlook日历的VEVENT,asp.net,outlook,calendar,icalendar,Asp.net,Outlook,Calendar,Icalendar,我需要允许用户下载具有多个会议日期的事件。为此,我创建了一个要下载的memorystream,它生成一个.ics文件。例如: BEGIN:VCALENDAR PRODID:-//Company//Product//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT SUMMARY:Subject of Event LOCATION:Location of Event UID:1227559810-8527e2c-20847@domain.com DESCRIPT

我需要允许用户下载具有多个会议日期的事件。为此,我创建了一个要下载的memorystream,它生成一个.ics文件。例如:

BEGIN:VCALENDAR PRODID:-//Company//Product//EN VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT SUMMARY:Subject of Event LOCATION:Location of Event UID:1227559810-8527e2c-20847@domain.com DESCRIPTION:Some description DTEND:20081101T200000Z DTSTART:20081101T200000Z PRIORITY:3 END:VEVENT BEGIN:VEVENT ... END:VEVENT END:VCALENDAR 开始:VCALENDAR PRODID:-//公司//产品//英语 版本:2.0 方法:发布 开始:VEVENT 摘要:活动主题 地点:活动地点 UID:1227559810-8527e2c-20847@domain.com 描述:一些描述 DTEND:20081101T200000Z DTSTART:20081101T200000Z 优先事项:3 完:维文特 开始:VEVENT ... 完:维文特 完:VCALENDAR 如果我在此文件中只包含一个VEVENT,它将保存到我现有的Outlook日历中。但是,当我有多个VEVENT时,它希望将其作为新日历打开,并将其归档在“其他日历”下

是否有一种方法(不使用Outlook中的文件导入)指定打开日历时应自动将其导入现有日历

更新:为了澄清,每个VEVENT都与一个“约会”相关。但是,可能存在也可能不存在重复模式


-迈克

我认为这行不通。Outlook在导入这些“开放”规格方面受到限制。我在尝试导入具有多个联系人的vCard文件时遇到了类似的问题。最后,我拆分了文件,并在Outlook中编写了一个脚本来导入目录中的所有文件。

这是可能的,可以使用Internet日历(如谷歌日历)。Outlook 2007具有订阅Internet日历的功能(在“帐户设置”下),Outlook 2003具有可用的开源插件。您可以创建一个“只读”的可访问提要。格式如下

BEGIN:VCALENDAR  
PRODID:-//XYZ Corp//My Product//EN  
VERSION:2.0  
CALSCALE:GREGORIAN  
METHOD:PUBLISH  
X-WR-CALNAME:My Calendar  
X-WR-TIMEZONE:(GMT-05:00) Eastern Time (US & Canada)  
BEGIN:VEVENT  
DTSTART:20061021T100000Z  
DTEND:20061021T130000Z  
DTSTAMP:20090211T175526Z  
UID:5f98dfd5-ac72-4ae1-b3c2-799a4e7c91f9  
CLASS:PUBLIC  
CREATED:20071104T183833Z  
DESCRIPTION: My description text.  
LAST-MODIFIED:20071104T183833Z  
LOCATION: 123 Anywhere Street\; Anyplace, NJ 12345\; US  
SEQUENCE:0  
STATUS:CONFIRMED  
SUMMARY: My summary text.  
TRANSP:OPAQUE  
END:VEVENT  
BEGIN:VEVENT  
DTSTART:20061101T170000Z  
DTEND:20061101T180000Z  
DTSTAMP:20090211T175526Z  
UID:6eaef015-eb90-4e94-8e6c-0003b928969a  
CLASS:PUBLIC  
CREATED:20071104T183833Z  
DESCRIPTION: My description for number 2.  
LAST-MODIFIED:20071104T183833Z  
LOCATION: 123 Anywhere Street\; Anyplace, NJ 12345\; US  
SEQUENCE:0  
STATUS:CONFIRMED  
SUMMARY: My summary for #2.  
TRANSP:OPAQUE  
END:VEVENT  
END:VCALENDAR

这是一个例子,三场国际足联2010年比赛的前景,我猜这是你正在寻找的

BEGIN:VCALENDAR

PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN

VERSION:2.0

METHOD:PUBLISH

X-CALSTART:20100611T140000Z

X-CALEND:20100711T201500Z

X-WR-RELCALID:{0000002E-5A22-AA75-713B-5C3715764495}

X-WR-CALNAME: World Cup Football Complete Match Schedule 2010 South Africa

BEGIN:VEVENT

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa

CLASS:PUBLIC

CREATED:20100608T231102Z

DESCRIPTION:Group A\nFollow MarkThisDate on Twitter

    markthisdate 

DTEND:20100611T154500Z

DTSTAMP:20100513T100200Z

DTSTART:20100611T140000Z

LAST-MODIFIED:20100608T231102Z

LOCATION:Johannesburg 

PRIORITY:5

SEQUENCE:0

SUMMARY:South Africa - Mexico

TRANSP:TRANSPARENT

UID:005ef5a170ab453276aad021756e5fde@markthisdate.com

X-MICROSOFT-CDO-BUSYSTATUS:FREE

X-MICROSOFT-CDO-IMPORTANCE:1

END:VEVENT

BEGIN:VEVENT

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa

CLASS:PUBLIC

CREATED:20100608T231102Z

DESCRIPTION:Group A\nFollow MarkThisDate on Twitter

    markthisdate 

DTEND:20100611T201500Z

DTSTAMP:20100513T100200Z

DTSTART:20100611T183000Z

LAST-MODIFIED:20100608T231102Z

LOCATION:Cape Town 

PRIORITY:5

SEQUENCE:0

SUMMARY:Uruguay - France

TRANSP:TRANSPARENT

UID:9660590c514358c5bceed9e75bed0222@markthisdate.com

X-MICROSOFT-CDO-BUSYSTATUS:FREE

X-MICROSOFT-CDO-IMPORTANCE:1

END:VEVENT

BEGIN:VEVENT

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa

CLASS:PUBLIC

CREATED:20100608T231102Z

DESCRIPTION:Group B\nFollow MarkThisDate on Twitter

    markthisdate 

DTEND:20100612T131500Z

DTSTAMP:20100513T100200Z

DTSTART:20100612T113000Z

LAST-MODIFIED:20100608T231102Z

LOCATION:Nelson Mandela Bay/Port Elizabeth 

PRIORITY:5

SEQUENCE:0

SUMMARY:Korea Republic - Greece

TRANSP:TRANSPARENT

UID:5a9eaca2435fb52e1c95ddb786f82efa@markthisdate.com

X-MICROSOFT-CDO-BUSYSTATUS:FREE

X-MICROSOFT-CDO-IMPORTANCE:1

END:VEVENT

END:VCALENDAR

确保每个VEVENT都使用唯一的UID。如果您对每个VEVENT使用相同的UID,您将确切地看到所描述的行为,因为只有唯一的UID被处理并添加到日历中


HTH.

这应该是可能的:/google提供以下功能,并将其精细加载到环境中。Outlook似乎有一些问题,但我们会继续关注

注意-当您使用“文件”>“导入”等时,这会正确导入outlook,只有双击才能使其仅加载第一个事件

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Insert something
X-WR-TIMEZONE:Insert something
X-WR-CALDESC:

BEGIN:VEVENT
DTSTART:20110909T180000Z
DTEND:20110909T200000Z
DTSTAMP:20110722T004312Z
UID:et53m4on1ii70en7uuv1thjr58@google.com
CREATED:20110721T105553Z
DESCRIPTION:
LAST-MODIFIED:20110721T105554Z
LOCATION:Insert something
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Insert something
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P0DT0H10M0S
END:VALARM
END:VEVENT

BEGIN:VEVENT
DTSTART:20110909T083000Z
DTEND:20110909T103000Z
DTSTAMP:20110722T004312Z
UID:e5fhdjff6vakjftnl3l9vjs64k@google.com
CREATED:20110721T105410Z
DESCRIPTION:
LAST-MODIFIED:20110721T111008Z
LOCATION:Auckland
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Insert something
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Insert something
TRIGGER:-P0DT0H10M0S
END:VALARM
END:VEVENT

END:VCALENDAR

确保文件的VCALENDAR部分中有“X-MS-OLK-FORCEINSPECTOROPEN:TRUE”。这允许将包含多个VEVENT的ICS文件导入Outlook中的默认日历。未创建新日历。

此操作有效:获取ICS文件,拖放Outlook中的日历按钮(我的左下角)。这会将多个条目添加到默认日历中,当ICS文件包含多个事件时,不会出现任何提示。更新和删除倍数是我的下一个挑战

双击同一个文件会产生非常不同的结果:创建一个新日历,而“忙碌”指示器将被忽略。我描述的拖放操作保持了忙碌指示器的完整性,就像它在ICS文件中一样


X-MS-OLK-FORCEINSPECTOROPEN:TRUE打开了第一个条目,因此可以对其进行批准和添加。后续事件将被忽略

X-MS-OLK-FORCEINSPECTOROPEN:FALSE或完全删除该行对我来说在Outlook 365上有相同的结果


另外,当双击包含多个VEVENT的ICS文件时,我看到的是:Outlook不完全兼容,因为创建了一个名为“untitled”的新日历。Windows 10附带的邮件应用程序是兼容的,所有条目都正确添加到日历中(可能是因为Win 10邮件应用程序只有一个日历?我不知道-我只为Outlook编写)

是同一个约会吗,具有重复模式,或者约会彼此不相关?这是同一个约会…不幸的是,可能存在也可能不存在重复模式。例如,它在本周星期二和下周星期三开会,等等。我想“VBEGIN”是一个输入错误?我相信属性
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
旨在解决这个问题,“当我有多个事件时,它想将其作为新日历打开,并将其归档在“其他日历”下”@mattb这样一来,我的outlook 2013忽略了其他事件,只导入了第一个事件是的,我也在想同样的事情。但订阅的.ics日历可以使用多个事件。@请尝试从Outlook Web Access打开ics。根据这篇文章,它在OWA中工作,而不是在Outlook中。我对检查这种方法很感兴趣。看起来你可以在markthisdate.com上找到更多的例子(这就是这个例子的来源),尽管我不确定它是否能在Outlook上运行(现在在Mac上)不,这不是因为它没有导入到当前日历中。尝试使用它时,出现错误,认为它不是有效的ics文件。对此进行了测试,但它似乎无法完全工作,至少在O365 Outlook中是这样。它会提示仅添加文件中的第一个VEVENT-任何其他VEVENT都不会添加到主日历中。X-MS-OLK-FORCEINSPECTOROPEN:TRUE仅影响事件添加到的outlook日历。如果只处理第一个VEVENT,则ICS文件存在另一个问题。与UID或开始时间/日期相关的问题,以便系统能够匹配VEVENT。