2015-04-11 2 views
5

Я отправляю приглашение на собрание приглашения с помощью PHP в Outlook. После кода, я используюПочему 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 

Проблема

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

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

+0

Перед тем, как удалять, указывает ли оно, на какое время он думает о встрече? Возможно, поля даты/времени не в правильном формате? Правильно ли установлено время на компьютере Outlook? Возможно, стоит обрезать поля в этом запросе, чтобы избавиться от необходимости, в случае, если какие-либо проблемы с Outlook. Также проверьте формат новой строки. – halfer

+0

С тем же кодом, он правильно принимает на другие электронные письма, такие как yahoo и gmail, но только проблема в Outlook – Jass

+0

Does DTSTAMP влияет на это? – Jass

ответ

1

Пару вещей:

  1. Убедитесь, что назначение с тем же UID 12345678123) не существует в вашей папке календаря.

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

1

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

UID:12345678123 

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

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

  1. порядковый номер
  2. свойство DTSTAMP

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

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

См https://tools.ietf.org/html/rfc5546#section-2.1.4