#c# #email #outlook #appointment #invitation
#c# #Адрес электронной почты #outlook #назначение #приглашение
Вопрос:
Я отправляю автоматические приглашения на собрания на основе дат в базе данных A.Я использую этот фрагмент для создания файла приглашения:
private string BuildInvitationFile(MailMessage mail, DateTime fromDate, DateTime toDate)
{
StringBuilder str = new StringBuilder();
str.AppendLine("BEGIN:VCALENDAR");
str.AppendLine("PRODID:-//Schedule a Meeting");
str.AppendLine("VERSION:2.0");
str.AppendLine("METHOD:REQUEST");
str.AppendLine("BEGIN:VEVENT");
str.AppendLine(string.Format("DTSTART;VALUE=DATE:{0:yyyyMMdd}", fromDate));
str.AppendLine(string.Format("DTEND;VALUE=DATE:{0:yyyyMMdd}", toDate.AddDays(1)));
str.AppendLine("LOCATION: " "");
str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
str.AppendLine(string.Format("DESCRIPTION:{0}", mail.Body));
str.AppendLine(string.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", mail.Body));
str.AppendLine(string.Format("SUMMARY:{0}", mail.Subject));
str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", mail.From.Address));
str.AppendLine(string.Format("ATTENDEE;CN="{0}";RSVP=TRUE:mailto:{1}", mail.To[0].DisplayName, mail.To[0].Address));
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");
return str.ToString();
}
Проблема в том, что когда это приглашение отправляется получателю, имеющему английскую версию клиента Outlook (мы находимся в Венгрии — CET), как DTSTART, так и DTEND увеличиваются на 2 часа. Немного странно, поскольку я не использую какое-либо время, только дату, и эти собрания должны быть собраниями «Весь день».
Ответ №1:
Предполагается формат iCalendar. Даты и время должны быть отформатированы в соответствии с ISO 8601. Из того, что я могу сказать, должно быть действительным следующее:
fromDate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ")
создание времени, подобного 20201013T123616Z
Постфикс «Z» указывает, что время указано по всемирному времени. Клиент должен преобразовать его в местный часовой пояс.