Outlook 更新发生时刷新.ICS文件

Outlook 更新发生时刷新.ICS文件,outlook,icalendar,vcalendar,Outlook,Icalendar,Vcalendar,我有一个数据库,它输出一个.ics文件,如下所示: BEGIN:VCALENDAR VERSION:2.0 PRODID:-//hacksw/handcal//NONSGML v1.0//EN BEGIN:VEVENT UID:36@homewoodphoto.jhu.edu DTSTAMP:20091211T175956Z DTSTART:20091106T200000Z DTEND:20091106T230000Z SUMMARY: END:VEVENT BEGIN:VEVENT UID:3

我有一个数据库,它输出一个.ics文件,如下所示:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:36@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091106T200000Z
DTEND:20091106T230000Z
SUMMARY:
END:VEVENT
BEGIN:VEVENT
UID:35@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091105T220000Z
DTEND:20091106T010000Z
SUMMARY:
END:VEVENT
BEGIN:VEVENT
UID:34@homewoodphoto.jhu.edu
DTSTAMP:20091211T175956Z
DTSTART:20091106T200000Z
DTEND:20091106T230000Z
SUMMARY:
END:VEVENT
END:VCALENDAR
我可以通过大多数电子邮件客户端轻松订阅它,即使是Microsoft Outlook 2007。但是,在客户机订阅了该文件之后,几乎不可能在发生更新时让它刷新该文件


有没有办法从.ics文件内部强制或推送更新到客户端?或者从Outlook内部,即使它不在Exchange上

您必须重新发布ical,但需要做两件事:

  • 保持相同的UID

  • 您需要添加一个序列头(它是一个简单的整数)。然后,增加每个新更新的序列号

  • 以下是更新的外观:

    BEGIN:VEVENT
    UID:34@homewoodphoto.jhu.edu
    DTSTAMP:20091211T175956Z
    DTSTART:20091106T200000Z
    DTEND:20091106T230000Z
    SUMMARY:
    SEQUENCE:1
    END:VEVENT
    

    我们对这个问题的唯一答案是:你做不到。到目前为止,无法控制日历客户端根据您的.ics文件刷新和更新的频率


    换句话说,没有日历更新的“推送”技术,客户机程序会随时拉。因此,如果您正在构建一个包含更新事件的数据库,并且希望将其立即推送到人们的日历中,那么。。。你不能:(

    这可能属于serverfault。您能解释一下“重新发布ical”是什么意思吗?.ics文件位于我的服务器上,并且始终是最新的,因为它从数据库中提取。一旦出现新事件(不一定是旧事件的更新),它在.ics文件中。问题是如何将其显示在订阅应用程序中。你是说每个事件的“顺序”将有助于实现这一点吗?新事件如何?嗨,Jason--我在这里听到两个问题。1)如何获取客户端的更新。这取决于你,以及他们如何得到它(更多的是一个商业规则)。无论您是通过电子邮件发送,还是他们查询http位置。2) 软件如何识别iCal的更新。假设某个事件发生了变化(例如:时间或地点)。要让软件识别更新,您需要为事件保留相同的UID,并增加序列号。我告诉你如何解决第二个问题。戴夫,这更像是两个问题的结合。我想知道是否有办法提醒客户端有新的/更新的信息,这样它就会刷新。我们在一天中的不同时间收到请求,因此客户端需要每5分钟刷新一次(不一定可能),或者.ics文件需要能够提醒客户端新的/更新的信息。我想知道这是否可能。PS当我说我们有“请求进来”时,我的意思是通过在线系统添加数据库条目,该系统应在5分钟内显示在日历上。