我正在寻找一种在c# (asp.net)中生成iCalendar文件(*.ics)的好方法。我找到了一些资源,但缺少的一点是它们对quoted-printable字段的支持-有回车和换行符的字段。
例如,如果description字段编码不正确,则只显示第一行,可能会破坏*.ics文件中的其余信息。
我正在寻找可以生成*.ics文件的现有类和/或可以生成quoted-printable字段的类。
发布于 2008-08-14 04:09:49
我用的是DDay.Ical,它是个好东西。能够打开一个ical文件并将其数据放入一个很好的对象模型中。它说的是测试版,但它对我们来说很有效。
编辑2016年11月
这个库已经被弃用了,但被另一个开发人员作为iCal.NET重新发布。
关于该版本的说明:rianjs.net/2016/07/dday-ical-is-now-ical-net
来源: GitHub:github.com/rianjs/ical.net
发布于 2008-08-20 08:02:16
我找到的最简单的方法就是用microformats标记你的超文本标记语言。
如果你想生成iCalendar文件,那么你可以使用hCalendar microformat,然后添加一个链接,比如“添加到日历”,它指向:
[http://feeds.technorati.com/events/[](http://feeds.technorati.com/events/[) 你的网页的完整网址,包括
然后Technorati页面解析您的页面,提取hCalendar信息并将iCalendar文件发送到客户端。
发布于 2011-01-22 05:15:58
我写了一个填充函数来处理这个问题。它基本上是兼容的--唯一的问题是第一行是74个字符,而不是75个字符( 74个字符是为了处理后续行的空格)……
Private Function RFC2445TextField(ByVal LongText As String) As String
LongText = LongText.Replace("\", "\\")
LongText = LongText.Replace(";", "\;")
LongText = LongText.Replace(",", "\,")
Dim sBuilder As New StringBuilder
Dim charArray() As Char = LongText.ToCharArray
For i = 1 To charArray.Length
sBuilder.Append(charArray(i - 1))
If i Mod 74 = 0 Then sBuilder.Append(vbCrLf & " ")
Next
Return sBuilder.ToString
End Function
我使用它作为我们的ICS提要的摘要和描述。只需在行中添加已经添加了前缀的字段(例如LongText = "SUMMARY:Event Title")。只要你把缓存设置得足够长,这个操作的开销就不会太大。
https://stackoverflow.com/questions/10658
复制相似问题