C# 引起时间变化的伊卡伦达波纹

C# 引起时间变化的伊卡伦达波纹,c#,icalendar,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

我正在尝试通过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");
我在不同的时间收到邮件。 e、 g.我使用UTC转换的开始时间“2016-02-28 13:00”和结束时间“2016-02-28 13:30”并通过。我在同一时间收到了一份邀请。 但为了避免重复,我收到了时间从“上午7:30”到“上午8:00”的邮件。 我尝试传递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点,这是正确的,但邮件中包含“时间:从2016年3月3日至2016年8月3日每天3:30至4:00发生。”


请同时发布由您的代码生成的iCalendar数据。@marten抱歉我的无知,iCalendar数据??我正在将带有指定规则的stringbuilder传递给alternateview,我更新了上面的代码。我指的是
str.ToString()
的实际结果。另外,请添加您提到的所有时间所指的时区(可能还有您所在的时区)。@marten系统位于IST上,我在创建UTC时使用IST,例如utcStime=TimeZoneInfo.ConvertTimeToUtc(dtStime,countryZone)。我不会超过伊卡伦达的时区。问题是,对于单个请求的invite,它可以正常工作,但对于重复请求的单个invite,时间会发生变化。
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();