Почему Outlook хочет удалить это приглашение на текущую встречу, отправленное программным способом?

Я отправляю письмо с приглашением на встречу через PHP в Outlook. Следующий код, я использую

BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150501T080000Z
DTEND:20150502T090000Z
DTSTAMP:20150511T075116Z
ORGANIZER;CN=Jass:mailto:[email protected]
UID:12345678123
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:[email protected]
DESCRIPTION:Complete event on http://www.sample.com/get_event.php?id=12345678
LOCATION: India
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:TESTING timezones
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

проблема

Когда пользователь получает почту, а затем принимает и отклоняет ее, она показывает «Неактуальная», а когда я нажимаю на нее, появляется предупреждение «Этот запрос на собрание устарел и теперь будет удален».

Какова точная причина? Я не в состоянии понять это.

5

Решение

Пара вещей:

  1. Убедитесь, что встреча с таким же UID (12345678123) не существует в папке «Календарь».

  2. Убедитесь, что DTSTAMP не содержит даты в будущем.

1

Другие решения

Возможно, у вас уже есть событие с таким же UID в вашем календаре:

UID:12345678123

Короткий ответ: всегда генерируйте глобально уникальный UID, если это совершенно новое, несвязанное событие

Длинный ответ:
Когда приглашение получено по электронной почте для уже существующего события, клиент должен сравнить свою существующую копию с полученной копией на основе:

  1. ПОСЛЕДОВАТЕЛЬНОСТЬ
  2. свойство DTSTAMP

Если полученное обновление старше события на стороне клиента, оно отбрасывается.

Таким образом, при создании обновления, если обновление к событию минимально, можно просто использовать более позднюю DTSTAMP. Если изменение является достаточно значительным (например, изменение DTSTART), число SEQUENCE должно быть увеличено.

Увидеть https://tools.ietf.org/html/rfc5546#section-2.1.4

1

По вопросам рекламы [email protected]