【发布时间】:2016-02-23 14:27:13
【问题描述】:
我正在使用 Icalendar 在用 C# 开发的门户上创建重复邀请。正文包含所涉及房间的信息。如果用户创建了一个为期 5 周的包含 3 个房间的重复周期,则会创建一个重复周期请求邀请。但是,如果用户在该重复周期中更新任何特定日期的房间信息,我会发送当天的单个邀请,但要从重复周期的单个邀请中删除该天,我必须重新创建该 5 周的单个邀请,其中包含特定日期EXDATE(排除)。有没有一种方法可以实现这一点,以避免重复 5 周的单次邀请,并且特定日期被排除在该邀请之外。
我用来创建单个重复邀请的代码示例。
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//Team Test");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", utcStime)); //utcStime is UTC time
str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", utcEtime));////utcEtime is UTC time
str.AppendLine(string.Format("RRULE:FREQ=WEEKLY;COUNT=5"));
str.AppendLine("LOCATION: ");
str.AppendLine(string.Format("UID:{0}", "Test12345"));
str.AppendLine(string.Format("DESCRIPTION:{0}", msg.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", msg.Body));
str.AppendLine(string.Format("SUMMARY:{0}", msg.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", msg.From.Address));
for (int i = 0; i < msg.To.Count; i++)
{
str.AppendLine(string.Format("ATTENDEE;ROLE=REQ-PARTICIPANT;CN=\"{0}\";RSVP=TRUE:mailto:{1}", msg.To[i].DisplayName, msg.To[i].Address));
}
str.AppendLine(string.Format("ATTENDEE;PARTSTAT=ACCEPTED;CN=\"{0}\":mailto:{1}",
str.AppendLine("BEGIN:VALARM");
str.AppendLine("TRIGGER:-PT15M");
str.AppendLine("ACTION:DISPLAY");
str.AppendLine("DESCRIPTION:Reminder");
str.AppendLine("END:VALARM");
str.AppendLine("END:VEVENT");
str.AppendLine("END:VCALENDAR");
System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType("text/calendar");
ct.Parameters.Add("method", "REQUEST");
AlternateView avCal = AlternateView.CreateAlternateViewFromString(str.ToString(), ct);
msg.AlternateViews.Add(avCal);
sc.Send(msg); // sc is smtpclient i.e. SmtpClient sc = new SmtpClient();
【问题讨论】:
-
我想,你应该提供更多信息。你的一些实现代码。和 ICalender 的介绍。
-
@DynamicVariable,我用我用来创建重复邀请的示例代码更新我的问题。
-
排除日期是 ICalendar 规范中的正确方法。
-
@BradleyUffner,正确,但我面临的问题是用户更新任何特定日期的请求,然后我必须通过 EXDATE 并重新创建重复邀请和特定日期的新邀请,我必须避免娱乐重复邀请。