Я отправляю письмо с приглашением на встречу через 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
проблема
Когда пользователь получает почту, а затем принимает и отклоняет ее, она показывает «Неактуальная», а когда я нажимаю на нее, появляется предупреждение «Этот запрос на собрание устарел и теперь будет удален».
Какова точная причина? Я не в состоянии понять это.
Пара вещей:
Убедитесь, что встреча с таким же UID (12345678123) не существует в папке «Календарь».
Убедитесь, что DTSTAMP не содержит даты в будущем.
Возможно, у вас уже есть событие с таким же UID в вашем календаре:
UID:12345678123
Короткий ответ: всегда генерируйте глобально уникальный UID, если это совершенно новое, несвязанное событие
Длинный ответ:
Когда приглашение получено по электронной почте для уже существующего события, клиент должен сравнить свою существующую копию с полученной копией на основе:
Если полученное обновление старше события на стороне клиента, оно отбрасывается.
Таким образом, при создании обновления, если обновление к событию минимально, можно просто использовать более позднюю DTSTAMP. Если изменение является достаточно значительным (например, изменение DTSTART), число SEQUENCE должно быть увеличено.