Icalendar的RRULE导致时间变化

时间:2016-02-22 12:09:15

标签: c# icalendar

我正在尝试通过c#代码为outlook创建重复邀请。 我的单一邀请的工作代码是: -

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("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");

但是当我添加像

这样的重复规则时
str.AppendLine(string.Format("RRULE:FREQ=WEEKLY;COUNT=3"));

我收到不同时间的邮件。 例如我使用starttime&#34; 2016-02-28 13:00&#34;和结束时间&#34; 2016-02-28 13:30&#34;以UTC格式转换并通过它。我同时收到了单一邀请。 但是为了再次发生,我收到了邮件的时间&#34; 07:30 AM&#34;到&#34; 08:00 AM&#34;。 我尝试传递TZID:UTC但它会导致错误。

我将以上字符串传递给以下代码

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();

问题是在收到的邮件中,日历重复发生时间到正确的时间段,请参考下面的图像,其中日历中的重复会议时段是9到930 AM,这是正确的,但邮件包含&#34;时间:发生每天有效2016年3月3日至2016年3月8日凌晨3:30至凌晨4:00。&#34;。

http://i.stack.imgur.com/1vMbk.png

0 个答案:

没有答案