[英]Outlook not importing multiple events in an ics file
我有一個生成的 iCal 文件的問題。
它似乎正確生成了代碼,並且 .ics 文件加載了多個事件,但是當我在 Outlook 中打開文件時,它只將第一個事件導入到我的日歷中,其余的沒有添加。
這是生成的 iCal 文件
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-WR-CALNAME: Calendar
CALSCALE:GREGORIAN
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VTIMEZONE
TZID:Europe/London
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19810329T010000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19961027T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:GMT
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART:20140906T090000
DTEND:20140906T170000
UID:224
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject\, meet our admissions tutors\,
URL;VALUE=URI:http://www.domain.com/events-224
SUMMARY:Open Day (undergraduate)
END:VEVENT
BEGIN:VEVENT
DTSTART:20141208T000000
DTEND:20141212T000000
UID:416
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-416
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20141215T000000
DTEND:20141218T000000
UID:417
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-417
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20150112T000000
DTEND:20150116T000000
UID:419
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Admissions Interviews
URL;VALUE=URI:http://www.domain.com/events-419
SUMMARY:Admissions Interviews
END:VEVENT
BEGIN:VEVENT
DTSTART:20150314T000000
DTEND:20150314T000000
UID:67
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject and meet our admissions tutors.
URL;VALUE=URI:http://www.domain.com/events-67
SUMMARY:Admissions Open Day (Arts)
END:VEVENT
BEGIN:VEVENT
DTSTART:20150425T000000
DTEND:20150425T000000
UID:73
DTSTAMP:20140721T102908
LOCATION:
DESCRIPTION:Explore the College with current students\, chat with the Director of Studies in your subject and meet our admissions tutors.
URL;VALUE=URI:http://www.domain.com/events-73
SUMMARY:Admissions Open Day (Sciences)
END:VEVENT
END:VCALENDAR
以下是設置iCal文件頁眉頁腳的變量
$iCalHeader = "" .
"BEGIN:VCALENDAR\n" .
"PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN\n" .
"VERSION:2.0\n" .
"METHOD:PUBLISH\n";
$iCalHeaderBottom = "CALSCALE:GREGORIAN\n" .
"X-MS-OLK-FORCEINSPECTOROPEN:TRUE\n" .
"BEGIN:VTIMEZONE\n" .
"TZID:Europe/London\n" .
"BEGIN:DAYLIGHT\n" .
"TZOFFSETFROM:+0000\n" .
"TZOFFSETTO:+0100\n" .
"DTSTART:19810329T010000\n" .
"RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\n" .
"TZNAME:BST\n" .
"END:DAYLIGHT\n" .
"BEGIN:STANDARD\n" .
"TZOFFSETFROM:+0100\n" .
"TZOFFSETTO:+0000\n" .
"DTSTART:19961027T020000\n" .
"RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\n" .
"TZNAME:GMT\n" .
"END:STANDARD\n" .
"END:VTIMEZONE\n";
$iCalFooter = "END:VCALENDAR";
最后是生成事件的代碼
$iCal .= "BEGIN:VEVENT\n".
"DTSTART:" . date('Ymd\THis', strtotime($row2["EVENT_StartDateTime"])) ."\n".
"DTEND:" . date('Ymd\THis', strtotime($row2["EVENT_EndDateTime"])) . "\n".
"UID:" . $row2["EVENT_ID"] . "\n".
"DTSTAMP:" . date('Ymd\THis', time()) . "\n".
"LOCATION:$address\n".
"DESCRIPTION:" . $this->escapeString($description) . "\n".
"URL;VALUE=URI:http://www.domain.com/events-" . $row2["EVENT_ID"] . "\n".
"SUMMARY:" . $this->escapeString($title) . "\n".
"END:VEVENT\n";
它適用於第一個事件,所以我不認為這是為每個事件生成的代碼的問題,我做了一些研究,但似乎找不到解決方案,是否需要額外聲明在每個事件之間使用?
或者 Outlook 不支持單個 iCal 中的多個事件,因此只導入第一個?
任何幫助或建議將不勝感激。
提前致謝。
您的Icalendar通過了此驗證器 ,但請嘗試為每個事件添加一個ORGANIZER。 我對規范的閱讀是必填項。
這可能是期望的問題。 當您說“導入”時,您如何發送/打開日歷以及您期望發生什么? 通常,Outlook和其他客戶對Icalendars有兩種治療方法。 如果Icalendar包含一個事件,具有METHOD = REQUEST,並且很幸運 ,它將顯示為邀請,並帶有將其直接添加到用戶日歷的按鈕。 (如果非常幸運,並且收件人的電子郵件在與會者字段中,則該事件可能在日歷中顯示為灰色,然后才進行預覽或在郵件視圖中打開。否則在預覽后會出現。)
如果它有多個事件或其他許多小問題,它將顯示為附件(如果通過郵件收到),用戶將不得不四處打開它。 通過郵件接收或從URL打開的多事件日歷被視為單獨的日歷。 沒有建議將其事件添加到用戶的日歷中,但是如果用戶知道自己在做什么,則可以選擇並拖動事件。
可能是很晚才回答這個問題的方法,但可能會幫助其他人。
X-MS-OLK-FORCEINSPECTOROPEN
如果此屬性設置為TRUE,則應將iCalendar流作為單個Calendar對象導入,而不管iCalendar中存在的VEVENT組件數目如何。 請注意,包含多個VEVENT組件的iCalendar文件有可能通過使用本節中指定的RECURRENCE-ID屬性來表示單個約會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.