gpt4 book ai didi

thunderbird - 使用 thunderbird-lightning 从 URL 获取日历

转载 作者:行者123 更新时间:2023-12-02 05:11:18 27 4
gpt4 key购买 nike

总结即将发生的事情:

  • 如何通过链接发送日历?
  • 为什么日历第一次保存在我的本地 PC 上时完全正常,而直接从网络上获取时无法修改,尽管它是在没有消息的情况下导入的?
  • 如何找到修改失败的原因?

完整解释:

我正在开发一个生成 ICS 日历的应用程序。该日历通过 URL 发送给用户。到目前为止,我发现用户可以通过Calendar tab -> New Calendar -> On the Network 导入日历。然后提供生成日历的 URL 并按照向导进行操作会创建一个新日历。这工作得很好,即使我想找到一种方法让用户只需单击我的链接即可导入日历(如果是这种情况,会自动触发向导)。我尝试将链接嵌入到邮件中,但是当点击它时它会触发浏览器(如果它以 HTTP 协议(protocol)提供或以 WebDAV 协议(protocol)提供时出现错误)。你知道有什么方法可以生成可以实现我的目标的链接吗?

然而,真正的问题是另一个。当我按照描述导入日历时(Calendar tab -> New Calendar -> On the Network)然后我尝试修改任何事件数据,我收到一条 MODIFICATION_FAILED 消息,错误控制台仅显示

Timestamp: 03/14/2013 12:20:08 PM
Error: An error occurred when writing to the calendar Test! Error code: MODIFICATION_FAILED. Description:
Source File: resource://calendar/modules/calUtils.jsm -> file:///home/mdavi/.thunderbird/sdq097yy.default/extensions/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/calendar-js/calCalendarManager.js
Line: 976

如何找到这个错误的原因?此外,我尝试将生成的日历(或从我的链接下载)导出到 ICS 文件,然后通过 File -> Open -> Calendar File ... 无需修改导出文件中的任何内容,这样我什至可以修改事件数据。所以为什么?我生成的 ICS 文件非常简单,如下所示:

BEGIN:VCALENDAR
PRODID:-//Events Calendar//iCal4j //EN
METHOD:PUBLISH
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:...
SUMMARY:...
DTSTART:...
DTEND:...
DESCRIPTION:...
LOCATION:...
URL:...
END:VEVENT
END:VCALENDAR

VEVENT 的所有属性都很好。

最佳答案

我不确定您是否打算允许用户远程更改您日历上的事件,或者您是否希望他们将日历数据导入到他们自己的日历中。我假设您是第一个并选择了“iCalendar”类型。首先解释一下,类型之间有明显的区别:

  • iCalendar:此模式使用 WebDAV,它最初不是用于日历数据,而是用于传输文件。为了保存日历数据,.ics 文件被下载、修改然后再次上传
  • CalDAV:这是 WebDAV 的扩展,专门用于日历。还有一些额外的查询是为了弄清楚服务器支持什么。每个事件都可以具体查询,因此客户不必上传整个文件。

如果您使用的是 iCalendar 类型,您的 Web 应用程序必须支持更多查询:

  • PUT/path/to/calendar.ics:进行此查询是为了将文件保存到服务器。如果您不支持此方法,则会抛出 MODIFICATION_FAILED。
  • PROPFIND/path/to/calendar.ics:这可能是可选的,但有助于减少网络负载并避免数据丢失。一个ETag query完成以查明文件是否已更改。此 ETag 然后在 If header 中使用,以仅在文件未更改时才 PUT。

如果您想提供 CalDAV 访问权限,我建议您采用现有的开源 CalDAV 服务器之一,并为其编写一个使用您的数据的后端。

不幸的是,Lightning 没有办法让链接触发自动订阅,但当它触发时,它可能会通过 webcal://webcals://方案。我不知道它们是否标准,但至少它们是常用的。

选择文件>开放>日历文件时,您正在使用的是使用 file> file:// uri订阅本地日历。如果删除该文件,您将丢失日历。如果您想要将事件导入内部日历,您需要做的是创建一个本地日历,然后使用“事件和任务”菜单从文件中导入事件。如果不下载远程文件,则无法执行此操作。

要进行更多调试,您可以在选项 > 高级 > 常规 > 配置编辑器中打开高级配置编辑器,然后启用首选项 calendar.debug.logcalendar.debug.log。详细。较新版本的 Lightning 可能有更多以 [calICSCalendar] 为前缀的调试信息。

关于thunderbird - 使用 thunderbird-lightning 从 URL 获取日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15408138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com