为什么 Outlook 要删除以编程方式发送的当前会议邀请?
Why does Outlook want to delete this current meeting invitation, sent programmatically?
我正在通过 PHP 向 Outlook 发送会议邀请邮件。按照代码,我正在使用
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150501T080000Z
DTEND:20150502T090000Z
DTSTAMP:20150511T075116Z
ORGANIZER;CN=Jass:mailto:jaspreet@anlita.se
UID:12345678123
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:sample@test.com
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
问题
当用户收到邮件而不是接受和拒绝时,它显示不是最新的,当我点击它时它显示警报 "This meeting request is out of date and will now be deleted"
具体原因是什么?我想不通。
您的日历中可能已经有一个具有相同 UID 的活动:
UID:12345678123
简短回答:如果这是一个全新的、不相关的事件,总是生成一个全球唯一的 UID
长答案:
当通过电子邮件收到已存在的活动邀请时,客户需要根据以下内容将其现有副本与收到的副本进行比较:
- 序列号
- DTSTAMP 属性
如果收到的更新早于客户端的事件,则将其丢弃。
所以在生成更新的时候,如果对事件的更新是最小的,就可以使用后面的DTSTAMP。如果更改足够重要(例如 DTSTART 更改),则必须增加 SEQUENCE 编号。
几件事:
确保日历文件夹中不存在具有相同 UID 12345678123) 的约会。
确保 DTSTAMP 不包含将来的日期。
我正在通过 PHP 向 Outlook 发送会议邀请邮件。按照代码,我正在使用
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20150501T080000Z
DTEND:20150502T090000Z
DTSTAMP:20150511T075116Z
ORGANIZER;CN=Jass:mailto:jaspreet@anlita.se
UID:12345678123
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:sample@test.com
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
问题
当用户收到邮件而不是接受和拒绝时,它显示不是最新的,当我点击它时它显示警报 "This meeting request is out of date and will now be deleted"
具体原因是什么?我想不通。
您的日历中可能已经有一个具有相同 UID 的活动:
UID:12345678123
简短回答:如果这是一个全新的、不相关的事件,总是生成一个全球唯一的 UID
长答案: 当通过电子邮件收到已存在的活动邀请时,客户需要根据以下内容将其现有副本与收到的副本进行比较:
- 序列号
- DTSTAMP 属性
如果收到的更新早于客户端的事件,则将其丢弃。
所以在生成更新的时候,如果对事件的更新是最小的,就可以使用后面的DTSTAMP。如果更改足够重要(例如 DTSTART 更改),则必须增加 SEQUENCE 编号。
几件事:
确保日历文件夹中不存在具有相同 UID 12345678123) 的约会。
确保 DTSTAMP 不包含将来的日期。