我正在使用ical.net为我的解决方案提供Outlook互联网日历集成。
我从早上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
答案 0 :(得分:1)
如何将事件添加到Outlook?
如果它们作为http订阅提供,Outlook可能会故意忽略它。如果想要提前通知,这是一个真正的个人选择,因此日历客户倾向于忽略来自外部来源的警报,无论是通过邀请(请参阅Sent email with iCal to outlook with valarm reminder)还是通过公共日历订阅添加。
如果您正在执行任务的导入并且警报仍未显示,则您的iCalendar流可能存在问题,因此查看实际的iCalendar流而不是您的代码会更多是有用的。
最后,我依稀记得Outlook只处理VTODO的绝对警报(参见https://tools.ietf.org/html/rfc5545#section-3.8.6.3),但我不知道是否仍然如此。