如何使用ics文件取消日历活动?

时间:2012-05-11 12:54:22

标签: outlook icalendar

我们的一个要求是创建iCalendar文件(.ics)并将它们作为附件发送到电子邮件中。我们正在使用DDay.Ical.dll创建ics文件,如下所示:

// Create a new iCalendar
iCalendar iCal = new iCalendar();

// Create the event, and add it to the iCalendar
Event evt = iCal.Create<Event>();

// Set information about the event
evt.Start = new iCalDateTime(SomeStartTime);
evt.End = new iCalDateTime(SomeEndTime);
evt.Location = "At so and so place";
evt.Description = "Some Description";
evt.Summary = "About Some Subject";
iCal.Method = "PUBLISH";

// Serialize (save) the iCalendar
iCalendarSerializer serializer = new iCalendarSerializer();
serializer.Serialize(iCal, @"iCalendar.ics");

完整的流程是:

  1. User1为特定日期和时间创建iCal文件并将其发送给User2。
  2. User2将打开ics文件并接受邀请。将在User2的LOCAL outlook中创建约会项目。
  3. 现在,假设,由于任何原因,如果取消约会,则User1可以创建一个ics文件并将其发送给User2,以便User2可以从本地Outlook取消他的活动。

    如何创建此类ics文件?

4 个答案:

答案 0 :(得分:11)

文件的创建方式与原始ics文件相同。事件状态将有所不同。 UID将识别事件,序列号将指示更新的优先级,然后将记录事件详细信息(更改或取消)

如果您想在发出邀请后更改/取消活动,您需要通过其UID识别事件/约会,并分配比原始ics事件更大的SEQUENCE号码。

UID(唯一标识符):http://tools.ietf.org/html/rfc5545#page-117

序列:http://tools.ietf.org/html/rfc5545#page-138

并设置事件状态

             / "CANCELLED"    ;Indicates event was cancelled.

状态:http://tools.ietf.org/html/rfc5545#page-92

哦 - 和方法 如果您需要为事件发送取消,则UID应与原始事件相同,并且组件属性应设置为取消Ex。 方法:取消 STATUS:取消

当然,如果收件人实际上点击加载/订阅它与第一次相同的日历应用程序,这只会“取消”该事件。 对于已“订阅”远程ics的应用程序 - 当他们接下来进行'更新'检查时,应检查更新并覆盖原始事件。

答案 1 :(得分:4)

旧线程,但只是想提供我的意见。

Outlook 在取消 ics 上显示“不支持的格式”也有问题。尝试将 METHOD 更改为 REQUEST,在 Outlook 中解决了该问题,但是 Gmail 和其他人没有很好地处理它,看起来像一个邀请,带有是/否/可能按钮。

经过多次(大量)寻找解决问题后,我终于意识到问题不在 ics 文件中,而是文件如何附加到电子邮件中。我用方法添加了它:REQUEST。将其更改为 method:CANCEL 后,它适用于所有客户端。

contype = new System.Net.Mime.ContentType("text/calendar");
//contype.Parameters.Add("method", "REQUEST");
contype.Parameters.Add("method", "CANCEL");
contype.Parameters.Add("charSet", "utf-8");
contype.Parameters.Add("name", "invite.ics");

答案 2 :(得分:1)

使用任何文本文件编辑器(例如Visual Studio Code)在ics文件中编辑所有事件,然后再次导入修改后的日历:

enter image description here

答案 3 :(得分:1)

当我发送包含ics文件的邮件进行删除事件时出现问题,但在Outlook中显示不支持的格式 然后我想出了网上的某个地方,我发现我只需要改变 方法:取消方法:请求

enter image description here

当我将其导入Outlook中时 enter image description here