【问题标题】:Add an alert to an event in Ical.net向 Ical.net 中的事件添加警报
【发布时间】:2017-08-27 15:04:36
【问题描述】:

我正在使用 ical.net 为我的解决方案提供 Outlook Internet 日历集成。

我从上午 00:00 到上午 00:00(第二天)有几个活动。 当我向事件添加警报时,在 Outlook 中这些事件显示时没有警报。

这是我添加警报和事件的代码。

    foreach (var taskItem in taskItems.Where(t => t.DueDate != null && t.DueDate.HasValue == true))
    {
        var hyperlink = Request.GetBaseUrl();

        hyperlink = string.Format("{0}/TaskBoard/Tasks?listId={1}", hyperlink, taskItem.ListId);
        var dueDate = new DateTime(taskItem.DueDate.Value.Ticks, DateTimeKind.Utc);
        var alarm = new Alarm()
        {
            Summary = taskItem.Title,
            Trigger = new Trigger(TimeSpan.FromMinutes(-15)),
            Action = AlarmAction.Display
        };

        var calendarEvent = new Event
        {
            Class = "PUBLIC",
            Summary = taskItem.Title,
            Created = new CalDateTime(taskItem.Created.Value),
            Description = string.Format("Open board: {0}", hyperlink),
            Start = new CalDateTime(dueDate),
            End = new CalDateTime(dueDate.AddDays(1)),
            Uid = taskItem.Id.ToString(),
            Location = taskItem.ListTitle
        };

        calendarEvent.Alarms.Add(alarm);
        calendar.Events.Add(calendarEvent);
    }

这是生成的 iCal 文件内容

BEGIN:VCALENDAR
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 2.2//EN
VERSION:2.0
X-WR-CALNAME:Agile Kanban - Meine Aufgaben
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20170814T114839
DESCRIPTION:Open board: https://localhost:44300/TaskBoard/Tasks?listId=637
 90e98-cacc-4f03-992f-f3276db06dda
DTEND:20170827T220000Z
DTSTAMP:20170829T170757Z
DTSTART:20170826T220000Z
LOCATION:Room1
SEQUENCE:0
SUMMARY:Task changed
UID:1d4b10bf-7434-41d9-8dd2-311e3679b0a7
BEGIN:VALARM
ACTION:Display
SUMMARY:Task changed
TRIGGER:-PT15M
END:VALARM
END:VEVENT
END:VCALENDAR

【问题讨论】:

    标签: c# icalendar


    【解决方案1】:

    事件是如何添加到 Outlook 中的?

    如果它们以 http 订阅的形式提供,Outlook 可能会故意忽略它。如何提前收到通知实际上是一种个人选择,因此日历客户倾向于忽略来自外部来源的警报,无论是通过邀请(参见Sent email with iCal to outlook with valarm reminder)还是通过公共日历订阅添加。

    如果您正在执行任务的导入,但警报仍未显示,则您的 iCalendar 流可能存在问题,因此查看实际的 iCalendar 流而不是您的代码会更有用。

    最后,我依稀记得 Outlook 只处理 VTODO 的绝对警报(请参阅https://www.rfc-editor.org/rfc/rfc5545#section-3.8.6.3),但我不知道是否仍然如此。

    【讨论】:

    • 我在原帖中添加了 ICal 的样本。即使我导入该文件,也不会设置警报。
    • 您的活动已过去。 Outlook 可能会在导入时将其剥离。
    • 在导入时,它是在未来 ;-) 但没有警报。你认为ical文件的格式正确吗?
    • 在进行了更多测试后,我发现 Outlook 忽略了 http 流中的警报。导入 ICal 文件时设置警报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    相关资源
    最近更新 更多